【问题标题】:How to reload an ember data record?如何重新加载 ember 数据记录?
【发布时间】:2012-12-20 07:30:45
【问题描述】:

我正在使用新的路由器和 ember data rev 11。

我需要强制 ember-data 从服务器重新加载记录的数据。在setInterval 函数中使用App.MyRecord.find(2) 从客户端本地存储加载数据。

如何从服务器重新加载数据?

【问题讨论】:

  • 是的,我查看了它和许多其他地方,包括内部 API。它不起作用。我的模型是:App.Channel.find('ch_66')。对服务器的请求是 /channels/ch_66,它是 SHOW 请求(获取 id='ch_66' 的特定频道)。当使用 findQuery('ch_66') 请求服务器 /channels?ch_66 这是 INDEX 请求(获取所有通道)

标签: ember.js ember-data


【解决方案1】:

just pushed record.reload() 到 Ember Data。这将要求适配器从服务器重新加载数据并使用新数据更新记录。

约束:

  • 您只能在记录已完成加载且尚未修改时调用reload()。否则返回的数据会与修改后的数据冲突。将来,我们将添加对合并挂钩的支持以解决此类冲突,这将允许 reload() 处于更多记录状态。
  • 如果在适配器返回新数据之前调用reload()并更改或保存记录,同样的原因会报错。该错误当前看起来类似于Attempted to handle event 'reloadRecord' on <Person:ember263:1> while in state rootState.loaded.updated.uncommitted.。基本上,这意味着您的记录处于“已更新但未提交”状态,并且您不能在“加载和未修改”状态之外调用reload()

【讨论】:

  • 很好奇,reload() 加载时记录的状态会改变吗?我忘记了当对象最初加载时是否存在阻止它被修改的状态......如果是这样,它是否可以在 reload() 情况下使用类似的子状态来避免约束 #2?
  • Yehuda...这似乎在刷新记录,但它并没有像我预期的那样更新 UI。是否需要调用某些东西才能将记录的更改应用到 UI?
  • @commadelimited 如果您的记录脏了,视图将不会重新呈现。 get() 将返回本地修改的值。但是你可以做一个yourRecord.reload().then(function(record) { record.rollback() })
  • 有没有关于merge 重新加载选项的可能性的消息?还是优先考虑模型的本地或远程版本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
相关资源
最近更新 更多