knockoutjs,复选框是延迟检查

时间:2012-08-27 12:12:14

标签: javascript knockout.js

来源在这里 http://jsfiddle.net/M8KFd/302/
如果你按动物的名字 - 一切运作良好。但是如果按下复选框,则会选择动物但不检查checkbos。任何想法?
我想要没有属性.isSelected()给我所有的动物

2 个答案:

答案 0 :(得分:1)

我认为这与事件的顺序有关。 选中复选框后,检查的评估完成;那时该项目不在selectedItems中。下次评估完成时,仍然可以解释延迟。

我分叉你的小提琴让你的例子工作(除了全部选择)

http://jsfiddle.net/dyKvQ/

答案 1 :(得分:1)

Here你小提琴的修改版。

主要变化如下:

  1. 使用“name”属性对复选框进行分组。我给了“动物”这个名字,但与模特没有关系。
  2. 动物阵列属于模型
  3. checked属性的绑定方式与checked: $parent.selectedAnimals类似。 selectedAnimals 是动物ID的数组。 Knockout.js保持着轨道。
  4. 每个输入的新绑定:value: id, attr: {id: id}。一旦输入获得与selectedAnimals数组中动物的id相同的值,Knockout.js就知道如何通过id修改此数组。
  5. selectAll 函数将每个动物的id从animals数组复制到selectedAnimals数组。 Knockout.js再次更新了用户界面。
  6. 还有一些标签