я в основном имею наблюдаемый массив в моем ViewModelОбновления родительскога выколотка элементы наблюдаемого массив, когда один из наблюдаемого внутри массива изменяет
self.details=ko.observableArray([]);
который содержит массив модели - DetailModel, который имеет isChecked
свойство как наблюдаемые.
Я хочу подписаться на изменения isChecked
и удалить все остальные флажки.
for(var i=0;i<10;++i)
{
var detail=new DetailModel(i);
detailList.push(detail);
detail.isChecked.subscribe(function(checkBoxCheckedState){
if(checkBoxCheckedState==true)
{
/* Idea is to untick all other checkboxes if one is checked */
console.log(detail);
console.log(detailList);
ko.utils.arrayFilter(self.details(), function(detailRow) {
if(detailRow.id!=detail.id)
{
detailRow.isChecked(false);
}
});
}
});
Я инициализирует данные массива внутри цикла и прикрепления подписываться там, из-за закрытия, только последний объект деталь доступен внутри функции подписки.
Как я могу достичь того же, не передавая обратный вызов родительской/родительской модели в модели дочернего вида?
https://jsfiddle.net/7srbxu5y/17/
я думал об этом, возможно, спасибо. Как мы можем сделать это так, чтобы подписка могла работать внутри цикла? Я знаю, что это связано с закрытием. Есть предположения? Я хотел бы попробовать это, чтобы понять –