簡單的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