EmberJS Model找不到底层商店的最新版本

时间:2013-05-05 00:10:19

标签: ember.js

对于一个简单的概述屏幕,我有一个开发的路由,它设置一个执行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 app中,模型已正确更新。

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

这似乎是我在EmberJS中完全错过的另一件小事。它是在文档中提到的某个地方,为什么它表现得那样?我想这种行为背后有一个有效的哲学。

我的概述屏幕只对展示最新数据感兴趣。如果记录不再存在于DB中,则模型不应再返回它。

我添加了sample project in Github这个问题。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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