最近在研究axios聊天室室遇到一个问题
将axios获取到的数据传递给data,从而改变页面中的数值,但是结果令人失望
这是data里的数据
原想将data中的items数组换成axios里的response.data,后来发现items一直为空,就拿字符串做实验了,里面放的123,
而在axios中
将items改成kkk
结局是:
在网页中渲染的数据还是1232,
根本无法改变data中的数据。
而通过另一方面试验,直接在methods中添加函数比如
ccc:function(){
this.items = "kkkk";
}
这样做却是可以改变数据。
我想的是,axios是一个函数,内部函数是无法改变外部的值的。
但是我又不能把axios放到mounted中,这样我就不能通过
setInterval(“app.aaa()”, 1000);
来实现轮询聊天了,所以必须找个办法把值传出去
结局
终于知道这个是缓存问题,浏览器只认第一个,,,必须采取一种手段欺骗浏览器
或者在reciever.php后面加一个?t=time,一直在变化的时间
但我试了还是不行
附一段代码
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
</head>
<body>
<div id="app">
<button @click="fn">1111</button>
{{msg}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
let vm = new Vue({
el: '#app',
data:{
msg:''
},
methods:{
fn(){
axios.get('data.json').then(res=>{console.log(res);this.msg=res.data.data})
}
}
})
// axios.get('./data.json')
// .then(res=>{
// console.log(res.data.data)
// })
// .catch(err=>{
// console.log(err)
// })
// axios({
// url:'./data.json',
// method:'get'
// }).then(res=>{
// console.log(res)
// }).catch(err=>{
// console.log(err)
// })
</script>
</body>
</html>
data.json
{
"meta": {
"msg": "提示信息",
"status": 200
},
"data": [
{"id": 1, "title": "test1"},
{"id": 2, "title": "test2"},
{"id": 3, "title": "test3"},
{"id": 4, "title": "test4"}
]
}
点击还是可以调用的