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
バインドを試みましたが、同じ結果が得られました。おそらく私はこれを間違った方法でやっていて、明らかな何かを逃しましたか?