【发布时间】:2017-04-03 23:54:52
【问题描述】:
如果我在 Vue 2 中使用 props 传递一个对象数组,并且在这个数组上我使用 v-for 指令,如果其中一个数组元素被删除,视图不会更新。
这似乎只有在 v-for 元素被声明为数据时才有效,但我的组件需要接收道具...
在下面的示例中,您可以看到services 数组中的元素确实被删除了,但没有触发 v-for。
我很确定我在这里做错了什么......
Vue.component('location-service-list', {
props: ['services'],
template: '<div>{{ services }}<div v-for="(service, index) in services">{{ service.id }} - {{ service.name }} <a @click.prevent="remove(index)">remove</a></div></div>',
methods: {
remove(index) {
this.services.splice(index, 1);
console.log(this.services);
},
}
});
const app = window.app = new Vue({
el: '#admin-app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.8/vue.js"></script>
<div id="admin-app">
<location-service-list :services='[{"id":1,"name":"Test 1"},{"id":2,"name":"Test 2"}]'></location-service-list>
</div>
【问题讨论】:
标签: vue.js laravel-blade vue-component