简单的Todo应用程序。请原谅我的无知提出一个相当基本的问题。VueJs:如何编辑数组项目
但是,你将如何去和阵列上编辑某个项目?
通常我会尝试我输入的值绑定到一个新的属性我的数据对象,然后在此新的属性分配给旧财产上点击throuch Vue公司的双向数据绑定。
像这样:http://jsfiddle.net/z7960up7/在我的情况
嗯,我使用V-重复指令,它通过我的数据数组循环,但我不能使用V型指令以使用数据绑定双向的,因为如果我这样做,属性的值会被破坏。 (在这里看到:http://jsfiddle.net/doL46etq/2/)
现在我不知道,我怎么会去更新我的任务数组:
我的想法是,通过我对点击的方法来传递VueObject(本),然后定义指数上我的事件处理程序,然后更新任务阵列,使用索引,就像这样:
HTML:
<input v-el="editInputField" type="text" value="{{ task.body }}" v-on="keyup: doneEdit(this) | key 'enter'"/>
<button v-on="click: editTask(this)">
Edit
</button>
JS:
methods: {
editTask: function (task) {
var taskIndex = this.tasks.indexOf(task.task);
this.tasks[taskIndex] = {
'body': document.querySelector('input').value,
'completed': false
};
console.log(task.task.body);
},
}
这是我拨弄一下:
http://jsfiddle.net/doL46etq/3/
但数据对象完全不更新,我不知道我怎么会去了解它,并对其进行更新。
什么是编辑阵列中的一个元素的最佳方式,使用Vue的?
编辑:一个简单的方法,只是删除元素,并使用push方法将新添加到数组中,但我真的只想更新元素,因为我想保持数据对象同步与我的后端。
谢谢Sangun。虽然我需要一些时间才能解决你的问题,因为我还没有研究vue组件。虽然我想知道,如果你能解释一下,编辑/更新是如何完成的,我想不需要使用组件:https://github.com/tastejs/todomvc/blob/gh-pages/examples/vue/ js/app.js – LoveAndHappiness
另外,什么时候在jsfiddle中启动Ajax请求? – LoveAndHappiness
这取决于您想要如何处理Ajax请求。如果您希望更新数据库中的信息,那么从组件上启动Set组件将是最好的(但是,请记住,只要单个字符发生更改就会发出请求,因此您可能需要延迟并缓冲所有的变化!) 如果你想更新数据,我会建议添加一个新的属性,而不是定义数据。这将允许您通过属性编辑值。这意味着如果您使用v-repeat项目,则可以使用{{item.property}}更新变量。 – Sangun