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 回答