1

我以下列方式使用knockoutJS:

var messagesFromServer = getJSONData().messages; //this get msgs from server
ko.mapping.fromJS(messagesFromServer, {}, myobject.viewModel.Messages);

然后我基本上每三秒调用一次来更新 html 表,它工作得很好,如果从服务器找到新数据,则会添加新行。现在我想在某些事情实际发生变化时添加自定义回调,例如当发现新消息时。

我应该如何实现这个?

谢谢你的建议,

-香港

4

2 回答 2

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);

请参阅 ko.toJSON 文档

我希望它有所帮助。

于 2013-10-03T13:26:50.630 回答
0

如果messages是数组,您可以使用它ko.utils.compareArrays来检测更改并自己引发自定义事件。这是用于比较的代码示例ko.observableArray()。寻找比较两个数组

于 2013-10-03T13:27:31.403 回答