我想根据复选框选中状态更改observableArray中的状态标志。
查看:
<tbody data-bind="foreach: allTask">
<tr>
<td>
<input type="checkbox" data-bind="checked : $root.setStatus"/>
</td>
<td>
<p><span data-bind="text : tsk , style : { color: $root.status=='true' ? 'red' : 'black' } "></span></p>
</td>
</tr>
</tbody>
ViewModal
'<script type="text/javascript">
var viewModal=function()
{
this.allTask=ko.observableArray([
{tsk : "Visit Hotel" , status : "true"},
{tsk : "Visit Room" , status : "true"}
]);
this.setStatus=ko.computed(function(data){this.data="false";});
};
ko.applyBindings(new viewModal());
</script>'
我是淘汰赛的新手。我可能完全错了。给我正确的方向并帮助我解决这个问题。
答案 0 :(得分:1)
查看: -
`<tbody data-bind="foreach: itemArray">
<tr>
<td>
<input type="checkbox" data-bind="checked: status" />
</td>
<td>
<span data-bind="text: name , style : { color: status()==true ? 'red' : 'black' }"> </span>
</td>
<td>
<span data-bind="text: status"> </span>
</td>
</tr>
</tbody>`
查看模态: -
`<script type="text/javascript">
function viewModal(){
var self=this;
self.itemArray=ko.observableArray([
{name:'Visit Hotel',status:ko.observable(true)},
{name:'Visit Room',status:ko.observable(true)},
{name:'Take Food',status:ko.observable(true)}
]);
self.TotalCount=ko.computed(function()
{
var temp=self.itemArray();
var totalCount=0;
for(var i=0;i<temp.length;i++)
{
if(temp[i].status()==true)
{
totalCount++;
}
}
return totalCount;
});
};
var vm = new viewModal();
ko.applyBindings(vm);
</script>`
答案 1 :(得分:0)
如果我了解您要执行的操作,请在绑定中将$root.setStatus
和$root.status
替换为status
,并删除ViewModel中的computed
。< / p>
我怀疑你的印象是computed
可以为foreach
的不同迭代返回不同的值。它不能,因为它无法知道绑定正在做什么。