Javascript VueJS动态属性名称未更新值
我试图实现一个关联数组,并结合访问值中的属性,键基于活动对象的值Javascript VueJS动态属性名称未更新值,javascript,vuejs2,vue.js,Javascript,Vuejs2,Vue.js,我试图实现一个关联数组,并结合访问值中的属性,键基于活动对象的值 <li v-for="campaign in campaigns"> <input type="text" v-model="configuration[campaign._id].value"> {{ configuration[campaign._id].value }} </li> {{configuration[campaign.\u id].value} 我是否错过了
<li v-for="campaign in campaigns">
<input type="text" v-model="configuration[campaign._id].value"> {{ configuration[campaign._id].value }}
</li>
{{configuration[campaign.\u id].value}
我是否错过了什么,感觉真的被窃听了。在VueJS 1中尝试执行此操作时发生的情况几乎完全相同,两次都没有抛出任何错误。这是由于在vue.js中发生的。您刚在数据中定义了configuration:{}
,因此configuration[key]
不是被动的。要使这些反应性更强,您必须使用:
设置对象的属性。如果对象是被动的,请确保将该属性创建为被动属性,并触发视图更新。这主要用于绕过Vue无法检测属性添加的限制
使用类似于以下内容:
this.campaigns.forEach((campaign) => {
var id = campaign._id;
this.$set(this.configuration, id, {'value': 'default value'})
})
var-app=新的Vue({
el:“#应用程序”,
数据:{
活动:[],
配置:{}
},
挂载:函数(){
此参数为[{
_id:“abcdefg”
}, {
_id:'kejwkfe'
}, {
_id:“iruwiwe”
}, {
_id:“reiwehb”
}];
this.campaims.forEach((campaign)=>{
var id=活动。\u id;
this.$set(this.configuration,id,{'value':'default value'})
})
}
})
-
{{configuration[campaign.\u id].value}
具有反应性的属性必须位于Vue构造函数创建的Vue实例中
它确保属性是反应性的并触发视图更新,即,它们在底层用对象.defineProperty
和MutationObserver
初始化
因此,使用Vue.set
添加新属性,然后通过Vue.delete
删除
查看更多信息-谢谢,这实际上解决了问题,感谢您指出反应性部分!