checkedバインディングに関連付けられたメソッドでバインディングによって更新された値にアクセスするにはどうすればよいclickですか?
バインディングメソッド/ハンドラーでは、バインディングと同期された配列に依存するプロパティ値にアクセスできないため、バインディングはバインディング後にchecked評価されるようです。clickclickcomputedchecked
単一のチェックボックスのテンプレート:
<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バインドを試みましたが、同じ結果が得られました。おそらく私はこれを間違った方法でやっていて、明らかな何かを逃しましたか?