如何重新初始化余烬数据模型

时间:2016-02-13 20:39:44

标签: ember.js ember-data

在我的应用程序中,一个模型中的数据本质上是“元”,并在另一个模型中定义属性。想象一下,检索数据库,其中列定义数据确定每行的属性。

只要我还没有从商店请求行,我就可以reopen()行模型。随后对store.findAll('row')的调用将检索具有所有已定义属性的数据。

但是,如果我已经在store.findAll('row')之前调用Column.reopen(),那么我找不到一种方法使商店确认新属性。

我尝试过没有成功:

  • 卸载所有行并再次找到它们
  • 对商店中已有的行调用peekAll / update
  • 在行模型上调用Ember.defineProperty()而不是重新打开。

现有和后续新行都不会获得新属性。

1 个答案:

答案 0 :(得分:1)

对我有用的解决方案是:

  let store = this.get('store');

  Ember.getOwner(store).unregister('model:item');
  Item.reopen(newAttributes);
  Ember.getOwner(store).register('model:item', Item);

  let currentRoute = this.get('currentRoute');
  if (currentRoute) {
    currentRoute.refresh();
  }

我使用更新架构的服务注册路由。当检测到模式更改时(我为了避免颠簸而去抖动),我取消注册模型,重新打开它,重新注册并刷新路由。可能有办法让商店反映这些变化而不刷新路线,但我找不到它。