我有一个简单的绑定测试。初始化和更新在页面打开时被调用。但是,如果我通过调用一个函数来手动更新objervable,则更新方法不会在我的绑定处理程序中调用。Knockout自定义绑定不触发更新为可观察
它以selectedQueue设置为2开始。单击该按钮正确选择select中的第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>