Knockout Mapping ObservableArray不包含我的对象

时间:2013-02-06 00:20:52

标签: knockout.js knockout-mapping-plugin

我正在尝试将计算机添加到使用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

谢谢

1 个答案:

答案 0 :(得分:0)

映射运行后,它会从JS创建observable - 不仅仅是根对象,还包括其中的所有属性。 observable是一个函数,因此您需要使用()形式访问名称:

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

这是一个更新的小提琴:http://jsfiddle.net/aREpY/41/