我不知道如何访问已通过与绑定checked
关联的方法中的click
绑定更新的值?
似乎checked
绑定在绑定之后评估click
,因为在click
绑定方法/处理程序中我无法访问computed
依赖于与checked
绑定同步的数组的属性值。
单个复选框的模板:
<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()
我只是在调用alert(topLevelViewModel.aggregatedSelectedIds())
以确保此属性表示当前选定过滤器的列表。
所以每次testMethod()
通过绑定调用click
- 我看到过滤器的先前状态(值,由 计算aggregatedSelectedIds
)。那么有没有办法在checked
绑定之前强制/推送/评估click
绑定?我尝试event
了绑定,但得到了相同的结果。也许我以错误的方式这样做并且错过了一些明显的东西?