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
    删除


    查看更多信息-

    谢谢,这实际上解决了问题,感谢您指出反应性部分!