1

このフィドルを考えてみましょう。

を動的に追加ko.computedしたい:ko.observableArray

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

write関数をからko.computed配列に管理する必要があります。このコードでは、読み取りはうまく機能しますが、ノックアウト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 に答える