我正在尝试将计算机添加到使用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
谢谢
答案 0 :(得分:0)
映射运行后,它会从JS创建observable - 不仅仅是根对象,还包括其中的所有属性。 observable是一个函数,因此您需要使用()形式访问名称:
ko.utils.arrayForEach(this.role(), function(role) {
if(role.name() == "Admin") {
admin = true;
}
});
这是一个更新的小提琴:http://jsfiddle.net/aREpY/41/