Я пытаюсь привязать ko.observableArray строк к шаблону, но я не могу заставить шаблон забирать изменения в строках внутри массива.Как я могу привязать ko.observableArray строк?
Если я привязываю набор объектов вместо набора строк, я получаю обновления для JSON, но они ничего не запускают, пока я не изменю первое значение, отличное от массива. Однако я предпочел бы найти массив строк, так как я смогу отправить модель данных непосредственно на сервер без какой-либо последующей обработки.
Как я могу получить обновления для своих массивов строк для запуска, и как я могу гарантировать, что они правильно инициируют изменения без необходимости обновления значения без массива?
Если невозможно связать с наблюдаемым массивом строк, как я могу активировать события при обновлении объектов внутри наблюдаемого массива?
Смотрите пример здесь: http://jsfiddle.net/gcEHC/2/
В этом примере данные array3 будут отражены в модели, когда значение изменяется, но изменения в Array1 и данные array2 никогда не будет отображаться.
JS:
var ViewModel = function() {
this.value = ko.observable("hi")
this.array1 = ko.observableArray(["hi", "there"]);
this.array2 = ko.observableArray([ko.observable("hi"), ko.observable("there")]);
this.array3 = ko.observableArray([{ data: "hi" }, { data: "there" }]);
};
ko.applyBindings(new ViewModel());
HTML:
<div class='liveExample'>
<p><input data-bind='value: value' /></p>
<div data-bind="foreach: array1">
<p><input data-bind='value: $data' /></p>
</div>
<div data-bind="foreach: array2">
<p><input data-bind='value: $data' /></p>
</div>
<div data-bind="foreach: array3">
<p><input data-bind='value: data' /></p>
</div>
</div>
<pre data-bind="text: ko.toJSON($data)"></pre>
Когда я создал наблюдаемый массив наблюдаемых строк, он все равно не работает. См. Array2 в приведенном выше jsfiddle. Обратите внимание, что изменения в наблюдаемом массиве строк никогда не подбираются - независимо от того, является ли содержимое видимым или нет. – slipheed
См. Мой обновленный ответ с образцом кода. – PatrickSteele
Привет, Патрик, спасибо за ваш обновленный код, но вопрос в том, почему это не работает: 'this.array2 = ko.observableArray ([ko.observable (" hi "), ko.observable (" there ")]); '. Ничто в документации не говорит о том, что оно не должно работать. – slipheed