似乎自定义绑定中的更新已停止工作(它在2.2.0版本中运行)。
我将警报放在应该触发的事件中,并且在按下“添加”按钮时它不起作用。
有人可以确认这个或提供信息问题在哪里以及应该做什么?
请参阅the working version (using KO 2.1.0) vs the broken version (using KO 2.2.0)。
HTML:
<div data-bind="foreach: items, myBind: {}">
<h3>
<a href="#" data-bind="text: id"></a>
</h3>
<div data-bind="text: name"> </div>
</div>
<button data-bind="click: add">Add Item</button>
<hr/>
JS:
ko.bindingHandlers.myBind = {
init: function(element, valueAccessor) {
alert('init');
},
update: function(element, valueAccessor) {
alert('update');
}
}
function Item(id, name) {
this.id = ko.observable(id);
this.name = ko.observable(name);
}
var viewModel = {
items: ko.observableArray([
new Item(1, "one"),
new Item(2, "two"),
new Item(3, "three")]),
add: function() {
viewModel.items.push(new Item(4, "foo"));
}
};
ko.applyBindings(viewModel);
答案 0 :(得分:2)
我认为您的问题已经回答here。您需要在绑定中创建对可观察数组的依赖关系。例如:
update: function(element, valueAccessor) {
//create a dependency, normally you would do something with 'data'
var data = ko.utils.unwrapObservable(valueAccessor());
alert('update');
}
请参阅this fiddle。
它在2.1中工作的事实可能被视为一个错误。