0

自定义绑定中的更新似乎已停止工作(它在版本 2.2.0 中工作)。

我将警报放在应该触发的事件中,当按下添加按钮时它不起作用。

有人可以确认这一点或提供信息问题出在哪里以及应该做什么?

查看工作版本(使用 KO 2.1.0)损坏版本(使用 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);
4

1 回答 1

2

我想你的问题在这里得到了回答。您需要在绑定中创建对可观察数组的依赖项。例如:

update: function(element, valueAccessor) {
    //create a dependency, normally you would do something with 'data'
    var data = ko.utils.unwrapObservable(valueAccessor());
    alert('update');        
}

看到这个小提琴

它在 2.1 中工作的事实可能被认为是一个错误。

于 2013-09-13T10:35:25.720 回答