【问题标题】:Server-side Changes to Model not Reflected in UI - EmberJS服务器端对模型的更改未反映在 UI 中 - EmberJS
【发布时间】:2014-02-21 20:21:36
【问题描述】:

我通过调用 this.get('model').save() 将我的模型从我的控制器中保存下来。这会导致一个 PUT 到一个只返回 200 消息的端点,而不再返回。然而,在服务器端,有一些自定义规则正在更改数据,使其与 Ember 发送到服务器的数据不同。这会使我的 UI 和持久层处于不一致的状态。

在将数据持久化到服务器后,确保 UI 反映数据的正确状态的正确方法是什么?我的服务器端端点是否应该返回更新后的模型?我试过在 save() 之后调用 this.get('model').reload() 但 UI 没有更新。当我这样做时,我可以看到它正在询问并从服务器获取新模型,但正如我所说,它没有反映在 UI 中。

我觉得我缺少一些 Ember 的基础知识。感谢您的帮助。

【问题讨论】:

  • 您的 api 端点应该返回与您发送到服务器进行更新的结构相匹配的更新模型。如果有 hasMany 关系在起作用,您的序列化程序或 ember 模型可能有问题......您不必重新加载模型。如果这样做,您可能会在整个应用中遇到模型绑定问题。
  • 好的,谢谢,我就是这么想的。

标签: javascript ember.js


【解决方案1】:

我猜你不是在等待记录完成更新过程。

http://emberjs.com/api/data/classes/DS.Model.html#method_reload

所以这将是:

this.get('model').reload().then(function() {
  console.log("Now I am ready !");
})

永远记住 javascript 是异步的。

【讨论】:

  • 要建立在 htache 所说的基础上,您需要将 this.get('model').reload() 放在 'then' 块旁边。
  • 是的,这实际上就是我正在做的事情。我的 save() 调用的 then() 块里面有 reload() 调用。我是否需要在 reload() 调用的 then() 块中执行任何操作来更新 UI?我认为 Ember 的数据绑定特性会在模型更改时导致 UI 更新,但现在似乎并非如此。
  • 他为什么需要重新加载模型?
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多