【发布时间】:2016-11-12 19:58:19
【问题描述】:
我的 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);
}
});
}
});
我在一个循环中初始化 details 数组并在那里附加订阅,因为关闭,只有最后一个 detail 对象在订阅函数内可用。
如何在不将回调传递给子视图模型内的父/父模型引用的情况下实现相同的目标?
【问题讨论】:
标签: javascript knockout.js closures knockout-3.0