0

次のコードがあります。

var ObjectViewModel = function (testObject) {
    //debugger;
    var self = this;
    self.id = testSet.id;
    self.details = testOject.details;
    self.children = ko.observableArray(testObject.children);
    self.childCount = ko.computed(function() {
        return self.children().length;
    });

    self.addObject = function () {
        //debugger;
        // Pending UI
        // Call API here
        // On success, complete
        self.children.push(dummyObject);
        self.childToAdd("");
    }.bind(self);
    }
    / etc

ただし、childCount では、this.children() は未定義です。ビューに子配列の長さをリアルタイムで表示させようとしているので、ユーザーがアイテムを追加/削除すると、カウントが更新されます。なぜこれが機能しないのか考えていますか?

4

1 に答える 1

2

this最後のパラメーターを使用して、関数が実行されたときの値を計算関数に渡すことができます。

this.childCount = ko.computed(function() {
    return this.children().length;
}, this);

this計算された外部への参照を保存することもできます。

var self = this;
this.childCount = ko.computed(function () {
    return self.children().length;
});
于 2013-03-23T21:32:33.653 に答える