基本上,我有一个对象,其键和值可通过其他功能更改。
app=new Vue({
...
data:{
myObject:{"key1":"value1","key2":"value2"}
}
})
我编写了一个组件,将其作为道具接收并显示。
Vue.component("my-component",{
props:['k','v'],
template:`
<div>{{k}}:{{v}}</div>
`
})
现在,当我写这篇文章时:
<my-component v-for="(value,key) in myObject" v-bind:k="key" v-bind:v="value"></my-component>
并执行app.myObject['someKey']='some value'
,即使在开发模式下也不会发生任何情况,也不会显示任何控制台消息。
我要去哪里错了?还是有更好的方法通过组件呈现对象的键和值?
编辑: 我观察到的一点是,当对象已经填充到数据对象中时,它可以完美呈现。但是,当外部函数对其进行修改时,除非,否则修改不会反映出来。除非我修改了键的值,该值已经存在于对象中。
答案 0 :(得分:0)
为对象中的子项提供如下循环。
<div v-for="(value, key, index) in object">
对于您的代码。
<my-component
v-for="(value, key) in myObject"
v-bind:key-prop="key" // prop name in my-component is keyProp but use key-prop in the parent component
v-bind:value-Prop="value"
/>
这是我的答案的JSFiddle。
答案 1 :(得分:-1)
所以我认为我在github(https://github.com/vuejs/vue/issues/10611)上发现了一个错误和问题,他们很快就对解决方案做出了回应。以上无效是JavaScript本身的限制。因此,应该使用
app.$set(app.myObject,'newKey','newValue)
或
Vue.set(app.myObject,'newKey','newValue')
此处有更多详细信息:https://vuejs.org/v2/guide/list.html#Object-Change-Detection-Caveats