スパン/ボタン/ノックアウトで行うもののビルドイン「クリック」ハンドラーと同じ方法で選択変更を処理するのに問題があります。簡単なシナリオでは、現在選択されているアイテムが変更されたときに、foreach内のそれぞれのアイテムを参照して関数を呼び出したいと思います。
<ul id="storeList" data-bind="foreach: $data">
<li>
<span data-bind="text: StaticName, click: $root.storeModel.editStore"></span>
</li>
</ul>
editStoreでは、storeは現在の完全なストアオブジェクトへの参照です。
p.editStore = function(store, event) {
location.hash = 'Butiker/Edit/' + ko.utils.unwrapObservable(store.StoreId);
var el = event.target;
p.currentEditItem(store);
p.currentEditElement(el);
}
代わりにselectを使用したいと思います。
<select data-bind="options: $data, optionsText: 'StaticName', optionsValue: 'StoreId', optionsCaption: 'Choose store', event : { change: $root.storeModel.editStore }"></select>
これは機能しますが、editStore関数では、最初のパラメーターとして何も渡されません。
selectでvalue:currentEditItemを実行できますが、そのobservableのデータが更新されたときに追加の処理を実行したいと思います。サブスクライブできません。これは、オブジェクト自体ではなく、その特定のプロパティの新しい文字列値のみを提供するためです。
クリックすると必要なものがすべて表示されるのに、変更を選択すると、関心のあるオブジェクトのごく一部を処理できるのはなぜですか?