我无法弄清楚如何在与绑定click
相关联的方法中访问已通过checked
绑定更新的值?Knockoutjs:同时使用点击和检查绑定时绑定评估的顺序
似乎checked
结合求值AFTER click
结合,因为在click
装订方法/处理程序无法访问其取决于阵列checked
结合同步computed
属性值。
模板单个复选框:视图模型的
<script id="singleFilterTemplate" type="text/html">
<li>
<input type="checkbox" data-bind="attr: { value: id },
click: $root.testMethod,
checked: $parent.selectedFilterIds">
</li>
</script>
我下面的层级:
- TopLevelViewModel ($root in template above, defines computed aggregatedSelectedIds property)
---- GroupViewModel_0 ($parent in template above)
-------FilterViewModel_0_0 (Each FilterViewModel is associated with a check box)
-------FilterViewModel_0_N
---- GroupViewModel_N
-------FilterViewModel_N_0
-------FilterViewModel_N_N
checked: $parent.selectedFilterIds
:每次复选框被选中/取消 - 选择合适的选项在TopLevelViewModel.selectedFilterIds
阵列更新click: $root.testMethod
:虽然点击复选框,我试图抓住所有复选框的当前状态,为此,我已经引入了计算属性aggregatedSelectedIds
,它运行良好,并代表所有GroupViewModel.selectedFilterIds
值的聚合状态,基本上它将来自所有selectedFilterIds
属性的元数据聚合为单个值,并且在testMethod()
中, m只需拨打alert(topLevelViewModel.aggregatedSelectedIds())
即可确保此属性表示当前选定的过滤器列表。
因此,每个由click
调用时testMethod()
结合 - 我看到了过滤器的先前状态(值,由aggregatedSelectedIds
计算)。那么有什么办法在click
绑定之前强制/推送/评估checked
绑定?我试过event
绑定,但得到了相同的结果。也许我以错误的方式做了这件事,错过了一些明显的东西?
为我工作!非常感谢 :) – 2012-05-23 16:21:07