私は単純なバインディングテストを行っています。ページが開くとInitとUpdateが呼び出されます。しかし、それを行う関数を呼び出すことによってobjervableを手動で更新すると、更新メソッドがバインディングハンドラで呼び出されていません。ノックアウトカスタムバインディングが監視対象に更新されない
だから、selectedQueueは2に設定されています。ボタンをクリックすると、選択項目の3番目の要素が正しく選択されます。しかし、私のバインディングハンドラはこの変更のために呼び出されていません。
シンプルなものがありますか?
<select id="productGroup" name="productGroupen" data-bind="value:selectedQueue, treeMenu: selectedQueue">
<option value="1" selected="selected">Group 1</option>
<option value="2">Group 2</option>
<option value="3">Group 3</option>
</select>
<div data-bind="text: selectedQueue"></div>
<button data-bind="click:setQueue">Set to 3</button>
<script src="~/Scripts/knockout-3.4.0.js"></script>
<script>
ko.bindingHandlers.treeMenu = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
alert("init")
x = valueAccessor();
},
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
alert("update");
x = valueAccessor();
}
};
var Model = function() {
self = this;
this.selectedQueue = ko.observable(2);
this.setQueue = function() {
this.selectedQueue(3);
}
}
$(document).ready(function() {
ko.applyBindings(new Model());
});
</script>