我尝试通过WebSocket更新我的模型,我是以下一个方式创建的:
socket.on('message', function (jsonObj) {
if (jsonObj.action && jsonObj.action == 'consultationReload')
{
self.store.all('consultation').forEach(function(c) {
if (c.get('id') == jsonObj.consultationId) {
c.reload();
}
});
return;
}
但c.reload()
向API发出请求。我认为这是额外的请求,我可以将这些数据附加到来自websocket的消息。但问题是如何使用websocket中的这些json数据重新加载模型?
答案 0 :(得分:0)
而不是从商店获取所有记录,只需将push
记录到商店中。将更新商店中已有的任何记录,任何不存在的记录都将被插入。
this.store.push('consultation', {
id: 2,
title: "Calgary b/w I Can't Make You Love Me/Nick Of Time",
artist: "Bon Iver",
songCount: 2
});
http://emberjs.com/guides/models/pushing-records-into-the-store/
http://emberjs.com/api/data/classes/DS.Store.html#method_push
http://emberjs.com/api/data/classes/DS.Store.html#method_pushMany