Я выполняю интерфейс, в котором один объект в наблюдаемом массиве может быть selected
, когда вы нажимаете на него. В настоящее время selected
объектов (из которых должно быть только одно) в массиве должно иметь свои selected
наблюдаемые изменения.Изменение определенного наблюдаемого атрибута на n элементов в наблюдаемом массиве?
Нужно ли выполнять итерацию по всему массиву при щелчке, задав все selected
s до false, прежде чем установить значение элемента clicked в true, например?
self.selectAnnotation = function() {
var array = //annotations array from AnnotationsViewModel
// (actually, I'm not so sure of the syntax of this either)
for (var i = 0; i < array.length(); i++) {
var item = array[i];
item.selected(0);
}
self.selected(1);
}
С привязкой, который выглядит следующим образом:
<div id="clickArea" data-bind="foreach: annotations">
<span data-bind="click: selectAnnotation, css: selected: selected" class="annotation"></span>
</div>
Работал отлично. Спасибо! :) Правильно ли я предполагаю, что '$ data' представляет текущий объект ko в цикле foreach? – Frank
Да, $ data всегда является текущим связанным объектом, но только в цикле, везде. Итак, когда вы пишете: foreach: аннотации это означает foreach: $ data.annotations. Рассмотрите данные $ как это ключевое слово. – Damien