0

Knockout マッピングを使用して設定された子ビュー モデルに計算を追加しようとしています。侵入すると、ロール配列が JavaScript 配列に正しく入力されていることがわかりますが、私のビュー モデルでは、監視可能な配列の長さは常に 0 です。

これは、それを示す jsfiddle です。私が欠けているものについての助けをいただければ幸いです。

http://jsfiddle.net/spbrogan/aREpY/

これが子ビューモデルです

var userModel = function(data) {
    data.createDate = new Date(data.createDate);

    ko.mapping.fromJS(data, {}, this);


    this.isAdmin = ko.computed(function() {
        var admin = false;
        ko.utils.arrayForEach(this.role(), function(role) {
            if(role.name == "Admin") {
                admin = true;
             }
         });
         return admin;
    }, this);
} //close userModel

ありがとう

4

1 に答える 1

0

マッピングが実行されると、JS からオブザーバブル (ルート オブジェクトだけでなく、その中のすべてのプロパティ) が作成されます。オブザーバブルは関数であるため、() 形式を使用して名前にアクセスする必要があります。

ko.utils.arrayForEach(this.role(), function(role) {
    if(role.name() == "Admin") {
         admin = true;
    }
});

更新されたフィドルは次のとおりです。http://jsfiddle.net/aREpY/41/

于 2013-02-06T03:55:36.610 に答える