2013-10-02 111 views
1

有没有办法将记录添加到客户端model并向Ember表明这些记录已经在服务器端?在没有完全刷新的情况下更新客户端模型

因此,例如,如果我的Person模型具有“Peter”和“Paul”的记录,但随后服务器添加“Mary”,我的客户端就以非烬类数据的方式知道这一点。我希望能够让客户以一种不会对后续交互造成状态问题的方式添加“Mary”。

对于那些必须知道“用例” ......我想:

  • 有第一次请求的findAll()对于一个给定model拉全套资料从后面服务器
  • 在会话中随后的请求调用自定义的AJAX请求,该请求仅从返回的结果集返回差异
  • 我希望能够将这些差异推送到客户端模型中,而不会将其分解为“状态”

回答

0

有时我们使用websockets中的数据创建并更新客户端上的EmberData记录。在这种情况下,更改已经在服务器上,所以我们只是想在客户端上进行更改而不更改状态等,完全如您所描述的那样。

当我们在客户端上创造新的纪录,我们push他们进店,如:

this.store.push('post', { id: 1, body: 'Ember!' }); 

而且,当我们在客户端上更新现有记录,我们update他们在店里,例如:

this.store.update('post', { id: 1, hidden: true }); 
+0

太好了,谢谢。顺便说一句,我期待着找一些时间让我的应用程序中有一些websocket。两个简单的问题......我在'store'上看不到'update()'方法。我错过了什么吗?另外,对于你的“推”示例,只是想验证在“推”用例中,你正在谈论的是在服务器上添加新记录的情况,通过websocket发送给客户端的通知,然后“推”在客户端实现相同的结果。是对的吗? – ken

+0

@ken(1)'update'是EmberData(2)最新版本中'store'的一种方法,您是对的 – gerry3

+0

(1)好的,我在代码中看到它。它还没有制成文件。 – ken

相关问题