2013-02-06 22 views
0

我想将计算添加到使用Knockout映射填充的子视图模型。当我进入时,我看到角色数组在javascript数组中正确填充,但在我的视图模型中,可观察数组始终是长度为0.Knockout映射ObservableArray不包含我的对象

以下是显示它的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

的映射已运行后,它从你的JS创造可观 - 不仅仅是根对象,但它里面的所有特性。可观察到的是一个函数,所以你需要使用()形式访问名称:

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

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

+0

感谢。我很接近。 – Sean

相关问题