2

对于一个简单的概览屏幕,我开发了一个路由来设置一个执行 App.Location.find() 的控制器。

App.LocationsIndexRoute = Ember.Route.extend({

  setupController: function(controller) {
    controller.set('content', App.Location.find());
  },

  renderTemplate: function() {
    this.render('locations.index',{into:'application'});
  }

});

我天真地认为这会简单地去商店拿走所有的记录,让我对记录有一个最新的看法。

显然不是....

  • 当外部进程开始从数据库中删除记录时,App.Location.find() 会继续返回这些已删除的记录。(尽管 REST 调用不再显示它们)
  • 如果外部进程开始将记录添加到数据库,App.Location.find() 会拾取它们。
  • 如果我删除 Ember 应用程序本身中的记录表单,则模型会正确更新。

我应该如何在我的 Ember 应用程序中处理这个问题?我想对我的数据库中的任何内容有一个最新的视图。现在我需要刷新页面 (F5) 以获得最新视图。使用 linkTo 助手向我展示了陈旧的数据。

这似乎是我在 EmberJS 中完全错过的另一件微不足道的事情。文档中是否提到了它为什么会这样?我想这种行为背后有一个有效的哲学。

我的概览屏幕只是对显示最新数据感兴趣。如果数据库中不再有记录,则模型不应再返回它。

我在 Github中添加了一个存在此问题的示例项目。

4

2 回答 2

2

在调用 find() 之前尝试从存储中卸载所有数据:

this.store.unloadAll('widget');
this.store.find('widget');

这将完全刷新您的商店以反映服务器上的内容。

于 2014-05-15T18:16:00.083 回答
0

您是否尝试过 App.Location.query() 而不是 App.Location.find()?

于 2013-06-18T08:00:35.303 回答