---------html-----------
{{item.text}}
{{item.text}}
¥{{item.text}}
----------script------------
var vm = new Vue({
el: "#tbody",
data: {
index: [],
domain: [],
price: []
}
})
.....
function getBackData(params, page, callback) {
clearTimeout(timer);
timer = setTimeout(function() {
ajaxHandler = $.ajax({
url: '/get_history_price?p=' + page,
dataType: 'json',
type: 'get',
data: params,
success: function(result) {
for (i = 0; i < data.length; i++) {
/*--------问题所在,以下是错误的写法---------*/
vm.index[i] = i + 1;
vm.domain[i] = data[i].domain;
vm.price[i] = data[i].price;
/*-----------如何给以上数据赋值------------*/
}
if (callback) {
callback(result['page']['total_page'], result['page']['current'])
}
}
});
}, 500);
}
想要实现的是如下效果,例如:
1 qqrr.com ¥5000
2 xxxe.com ¥4566
3 vues.com ¥3456
求大神答疑解惑!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题已解决,感觉大家!我的解决方法如下(试了Vue.set(object, key, value)),但是报错了)
-----------html--------------
------------------js-----------------------
var vm = new Vue({
...
vm.items.push({
data 直接 赋给 data 然后 html 里 遍历 data

试试这个
按照你的格式
下个Vue Devtools扩展程序吧,方便找错,能看到是没更新视图还是没赋值成功。
这么写的话,好像不会更新视图,因为有这么句话
。
你先试试吧,有问题再说。
理解一下 vue 的响应式系统,就能够明白视图不更新的原因了。
深入响应式原理
这是 vue 响应系统的局限,所以专门搞了个
vm.$set方法来做这种事情。尤雨溪也说了,在接下来的 2017 年,可能会使用 ES6 的 Proxy 特性来改进 vue 的响应系统。
最简单的方式,应当是直接重新复制:
另外提一下,你那种方式是可能存在问题的。想一下多次 ajax 请求返回 data.length 不等的情况,问题就大了。
最后,循环写的方式也不对,应当将
{{item.text}}改为{{item}}保证数组元素是对象就可以了
而且我觉得你只需要一个数组就行了,而不是三个,然后在 v-for 加在 tr 上面