Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KnockoutJS,映射插件,在模型发生更改时得到通知?_Javascript_Knockout.js_Knockout Mapping Plugin - Fatal编程技术网

Javascript KnockoutJS,映射插件,在模型发生更改时得到通知?

Javascript KnockoutJS,映射插件,在模型发生更改时得到通知?,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,我使用knockoutJS的方式如下: var messagesFromServer = getJSONData().messages; //this get msgs from server ko.mapping.fromJS(messagesFromServer, {}, myobject.viewModel.Messages); 然后,我基本上每三秒钟调用一次这个函数来更新html表,它工作得很好,若从服务器找到新数据,就会添加新行。现在,我想在实际发生更改时添加自定义回调,例如在发现新

我使用knockoutJS的方式如下:

var messagesFromServer = getJSONData().messages; //this get msgs from server
ko.mapping.fromJS(messagesFromServer, {}, myobject.viewModel.Messages);
然后,我基本上每三秒钟调用一次这个函数来更新html表,它工作得很好,若从服务器找到新数据,就会添加新行。现在,我想在实际发生更改时添加自定义回调,例如在发现新消息时

我应该如何实现这一点

谢谢你


-hk

您可以将这两个对象转换为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.utils.comparararrays
检测更改并自行引发自定义事件。下面是比较
ko.observearray()
的代码示例。寻找