Javascript 剔除嵌套对象绑定不起作用(对象未定义)

Javascript 剔除嵌套对象绑定不起作用(对象未定义),javascript,knockout.js,Javascript,Knockout.js,所以我有四个模型: 大厅(视图模型) 信息 战役 运动 我把它们设置成这样: Lobby: function(Messages, Campaigns) { var self = this; self.chat = new Messages(); self.campaigns = new Campaigns(); }, Campaigns: function() {

所以我有四个模型:

  • 大厅(视图模型)
  • 信息
  • 战役
  • 运动
我把它们设置成这样:

       Lobby: function(Messages, Campaigns) {
            var self = this;
            self.chat = new Messages();
            self.campaigns = new Campaigns();
        },
        Campaigns: function() {
            var self = this;
            self.campaigns = ko.observableArray();
        },
        Messages: function() {
            var self = this;
            self.message = ko.observable("");
            self.messages = ko.observableArray();
        },
        Campaign: function(campaign) {
            var self = this;
            var status = ["In Lobby", "In Game", "Finished"];
            self.Id = ko.observable(campaign.Id);
            self.url = ko.observable("/matchmaking/" + campaign.Id);
            self.mapName = ko.observable(campaign.Map);
            self.mapImage = ko.observable("/Images/"+ campaign.Map +".jpg");
            self.notes = ko.observable(campaign.Notes);
            self.status = ko.observable(status[campaign.status]);
        }
我有一个简单的绑定来查看聊天模型中的每条消息:

   <div id="chat-messages" data-bind="foreach:chat.messages" style=" max-height: 250px; min-height: 80px; overflow-y: auto;">
                        <div data-bind="text:$data"></div>
                    </div>
但是,我得到以下错误:

未捕获引用错误:无法处理绑定“foreach:函数” (){return chat.messages}“消息:未定义聊天


我试着把它们放在一个模型里,像这样把它们分开。各种各样的,它只是不想工作。有什么建议吗

你的问题是
聊天
是可观察的,因此你应该调用
聊天()。消息
:)

你的问题是
聊天
是可观察的,因此你应该调用
聊天().messages
:)

lobb
chat
messages
类型的函数,因此使用绑定
data bind=“foreach:chat.messages”
转换为
lobble.chat
,它返回一个函数。因此,您需要将绑定更改为
data bind=“foreach:chat().messages”
lobb
chat
messages
类型的函数,因此使用绑定
data bind=“foreach:chat.messages”
将转换为
lobble.chat
,返回函数。所以你需要将你的绑定更改为
data bind=“foreach:chat().messages”

foreach:chat().messages
?@artm可能是正确的,我猜这是一种拼写错误,发生在我们当中最好的人身上:-)(@QBM5
chat
可以在
大厅中看到)是的,谢谢,作为答案发布,我会接受
foreach:chat().messages
?@artm可能是正确的,我猜这是一种打字错误,发生在我们当中最好的人身上:-)(@QBM5
聊天
大厅
)是的,谢谢,作为答案发布,我会接受
  ko.applyBindings(this.viewModel); //where this.viewModel is an instance of Lobby