【发布时间】:2018-05-16 20:00:39
【问题描述】:
我想知道什么是适合我的情况的好方法。考虑以下代码:
<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }} + {{todo.added_text}} <button v-on:click="add_text(todo)">do</button>
</li>
</ol>
</div>
<script type="text/javascript">
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: 'Learn JavaScript' },
{ text: 'Learn Vue' },
]
},
methods: {
add_text(item){
index = this.todos.indexOf(item);
this.todos[index].added_text = "something else";
// this.todos[index].text = 'learn more';
}
}
})
</script>
如果按下按钮,我想添加 todo.added_text。但是,因为在 vue 实例化时这个属性不是数组中元素的一部分,所以这个属性根本不会出现(这是我的假设,我可能错了)。
但是,当我更改同一元素中的其他内容时(例如,注释行:this.todos[index].text = 'learn more';),todo.text 和 todo.added_text 都会更新。
我的问题是,除了更改同一元素的其他一些属性之外,还有什么好方法可以告诉 vue 元素中发生了某些变化?
【问题讨论】:
标签: javascript vue.js