我以下列方式使用knockoutJS:
var messagesFromServer = getJSONData().messages; //this get msgs from server
ko.mapping.fromJS(messagesFromServer, {}, myobject.viewModel.Messages);
然后我基本上每三秒钟调用一次来更新html表,它工作正常,如果从服务器找到新数据,则添加新行。现在我想在实际发生变化时添加自定义回调,例如在找到新消息时。
我该如何实现?
感谢adv,
-hk
答案 0 :(得分:0)
您可以将两个对象转换为json,然后将它们与json字符串进行比较。
var messagesFromServer = getJSONData().messages; //this get msgs from server
var newString = ko.toJSON(messagesFromServer);
var oldString = ko.toJSON(myobject.viewModel.Messages);
if(newString != oldString ) {
// something new
}
ko.mapping.fromJS(messagesFromServer, {}, myobject.viewModel.Messages);
我希望它有所帮助。
答案 1 :(得分:0)
如果messages
是数组,您可以使用ko.utils.compareArrays
检测更改并自行引发自定义事件。以下是比较ko.observableArray()
的代码示例。寻找Comparing two arrays