Простой Todo-App. Пожалуйста, извините мое невежество, чтобы задать довольно простой вопрос.VueJs: Как отредактировать массив Item
Но как бы вы шли и редактировали определенный элемент массива?
Как правило, я пытаюсь привязать значение моего ввода к новому свойству объекта данных, а затем присвоить это новое свойство старому свойству при двухстороннем привязке данных к клику.
Как это: 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
Также, когда пришло время запустить Ajax-запрос в вашем jsfiddle? – LoveAndHappiness
Это зависит от того, что вы хотите сделать с помощью запроса Ajax. Если вы хотите обновить информацию в базе данных, то лучшим вариантом будет стрельба из Setter на компоненте (однако имейте в виду, что запрос будет производиться всякий раз, когда меняется один символ, поэтому вы можете захотеть выставить задержку и буфера всех изменений!) Если в случае, если вы хотите обновить данные, я бы предложил добавить новое свойство, а не определять данные. Это позволит вам редактировать значение через свойство. Это означает, что если вы будете использовать элемент v-repeat, вы можете использовать {{item.property}} для обновления переменной. – Sangun