Knockout.js 敲除映射不';不包含我的对象

Knockout.js 敲除映射不';不包含我的对象,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我正在尝试向使用淘汰映射填充的子视图模型添加一个computed。当我闯入时,我看到javascript数组中正确填充了角色数组,但在我的视图模型中,可观察数组的长度始终为0 这里有一个JSFIDLE显示了它。对于我所缺少的任何帮助,我们将不胜感激 这是子视图模型 var userModel = function(data) { data.createDate = new Date(data.createDate); ko.mapping.fromJS(data, {}, t

我正在尝试向使用淘汰映射填充的子视图模型添加一个computed。当我闯入时,我看到javascript数组中正确填充了角色数组,但在我的视图模型中,可观察数组的长度始终为0

这里有一个JSFIDLE显示了它。对于我所缺少的任何帮助,我们将不胜感激

这是子视图模型

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

谢谢

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

这里是一个更新的小提琴:

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