我是新來的knockout.js,並試圖修復在Laravel上構建的網站上的數據綁定,並使用knockout.js。ObservableArray不綁定到GUI
Observable數組運行良好,項目可以被推送和彈出沒有問題。問題在於綁定到GUI。當將項目推送到陣列時,這些項目將添加到GUI中,但除此之外沒有其他工作,例如刪除項目,以及稍後添加更多項目時,這些項目將添加到GUI元素列表的頂部,而不會添加到GUI上的現有項目之後。可觀察的數組在push/pop/removeall之後有正確的項目,它只是不反映到GUI。
我想問題是可觀察數組沒有綁定到GUI,但我無法弄清楚什麼是錯的。
剝離代碼:
Chat.init = function(){
Chat.viewModel = new Chat.ViewModel;
ko.applyBindings(Chat.viewModel, $('#msg_canvas').get(0));
};
Chat.ViewModel = function(){
self.messages = ko.observableArray();
self.setMessages = function(msgs){
_.each(msgs, function(msg){
self.messages.push(msg);
});
};
self.clearMessages = function(data, e){
self.messages.removeAll();
}
}
clearMessages
通過onclick: data-bind="click: $parent.clearMessages
的HTML被稱爲是這樣的:
<div id="msg_canvas" class="msg-wrap col-md-12"
style="height:274px;overflow-y:scroll;" data-bind="foreach: messages">
<div class="media msg">
<div class="media-body">
<span data-bind="text: sent_at"></span>
<small class="col-lg-10" data-bind="text: message"></small>
</div>
</div>
任何幫助或指針,這可能是導致該問題將高度讚賞。
更新:加入未列入張貼之前
你是否也使用下劃線js? – Tanner 2014-09-23 08:56:22
是的,下劃線js也在網站上使用。我還沒有檢查它是否與此功能有關。 – Laowai 2014-09-23 09:26:52