Vue.js 如何向重复的数组对象添加新的属性?
Vue.js How to add new property to a repeated array object?
html
<div v-repeat=dudes>{{a}}, {{b}}</div>
js
dudes = [{a:1}, {a:2}, {a:3}]
new Vue({
el: 'body',
data: {dudes: dudes}
})
dudes[0].b = 'test'
尝试设置 dudes[0].b = 'test'
无效。
http://jsbin.com/dogadutiqa/1/edit
除非我用 b
属性 开头定义帅哥 dudes = [{a:1, b:null}, {a:2}, {a:3}]
如何添加新属性?
由于 ES5 的限制,Vue 无法检测直接添加到对象或从对象删除的属性。
您需要使用$add
方法声明属性,才能观看。另外,如果你想删除 属性,你需要 $delete
方法。
对于最新的 Vue 版本(本回答时为 2.2.0),您应该这样做:
而不是 dudes[0].b = 'test'
只做:
Vue.set(dudes[0],'b','test');
从方法内部,或:
$set(dudes[0],'b','test')
从视图模板内部(如 @click="$set(dudes[0],'b','test')"
)
html
<div v-repeat=dudes>{{a}}, {{b}}</div>
js
dudes = [{a:1}, {a:2}, {a:3}]
new Vue({
el: 'body',
data: {dudes: dudes}
})
dudes[0].b = 'test'
尝试设置 dudes[0].b = 'test'
无效。
http://jsbin.com/dogadutiqa/1/edit
除非我用 b
属性 开头定义帅哥 dudes = [{a:1, b:null}, {a:2}, {a:3}]
如何添加新属性?
由于 ES5 的限制,Vue 无法检测直接添加到对象或从对象删除的属性。
您需要使用$add
方法声明属性,才能观看。另外,如果你想删除 属性,你需要 $delete
方法。
对于最新的 Vue 版本(本回答时为 2.2.0),您应该这样做:
而不是 dudes[0].b = 'test'
只做:
Vue.set(dudes[0],'b','test');
从方法内部,或:
$set(dudes[0],'b','test')
从视图模板内部(如 @click="$set(dudes[0],'b','test')"
)