Если у меня есть простой список строк, я могу добавлять/удалять элементы и обновлять пользовательский интерфейс нокаутом, но как я могу получить редактирование/обновление для работы?Не удалось обновить одно значение в простом/плоском наблюдаемом массиве
Fiddle: http://jsfiddle.net/5M5bL/2/
Javascript
function myVM() {
var self = this;
self.myList = ko.observableArray([]);
self.editItem = function(data) {
$("#dialog-edit").dialog({
resizable: false,
height:140,
modal: true,
title: "Edit " + data,
buttons: {
"Save": function() {
//data("new value");
//data = "new value";
// ??? How would I update this item's myList value from here?
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
}).show();
}
}
var vm = new myVM();
vm.myList.push(ko.observable("Ham"));
vm.myList.push(ko.observable("Cheese"));
vm.myList.push(ko.observable("Egg"));
ko.applyBindings(vm);
HTML
<table>
<thead>
<tr>
<th>Food</th>
<th> </th>
</tr>
</thead>
<tbody data-bind="foreach: myList">
<tr>
<td data-bind="text: $data"></td>
<td><button type="button" data-bind="click: $root.editItem">Edit</button></td>
</tr>
</tbody>
</table>
<div id="dialog-edit" style="display: none">
</div>
Как я могу получить мой editItem/Сохранить функцию для обновления исходного массива MyList? В тот момент, «данные» это просто обычная строка не является обновляемым наблюдаемыми
Так что, если я пытаюсь обновить с данными («New Value») я получаю «данные» ошибок не является функция
Спасибо вам обоим. hilarudeens вторая скрипка показывает, как решить проблему через нокауты $ index – mejobloggs