1

考虑一下这个小提琴

我想将ko.computeds 添加到ko.observableArray动态:

self.items.push(ko.computed({
    read: function () {
        return items[i];
    },
    write: function (value) {
        //some write action
        alert(value);
    }
}));

我需要管理从数组中的write函数。ko.computed使用此代码, read 工作得很好,但knockout没有调用该write函数,因此alert没有被调用。

我错过了什么吗?有解决方法吗?

4

1 回答 1

0

我解决了它创建另一个ViewModel

function item(value) {
    var self = this;

    self.value = ko.observable(value);
    self.computed = ko.computed({
        read: self.value,
        write: function (value) {
            alert(value);
            self.value(value);
        }
    });
}

function header(items) {
    var self = this;

    self.items = ko.observableArray();

    for (var i = 0; i < items.length; i++) {
        self.items.push(new item(items[i]));
    }
}

的HTML:

<ul data-bind="foreach: items">
    <li>
        <input type="text" data-bind="value: computed" />
    </li>
</ul>

小提琴工作。

于 2013-02-27T12:56:56.513 回答