在foreach淘汰赛中检查了事件

时间:2014-01-26 06:49:17

标签: javascript knockout.js

我想根据复选框选中状态更改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>'

我是淘汰赛的新手。我可能完全错了。给我正确的方向并帮助我解决这个问题。

2 个答案:

答案 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的不同迭代返回不同的值。它不能,因为它无法知道绑定正在做什么。