在我的应用程序中,一个模型中的数据本质上是“元”,并在另一个模型中定义属性。想象一下,检索数据库,其中列定义数据确定每行的属性。
只要我还没有从商店请求行,我就可以reopen()
行模型。随后对store.findAll('row')
的调用将检索具有所有已定义属性的数据。
但是,如果我已经在store.findAll('row')
之前调用Column.reopen()
,那么我找不到一种方法使商店确认新属性。
我尝试过没有成功:
Ember.defineProperty()
而不是重新打开。现有和后续新行都不会获得新属性。
答案 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();
}
我使用更新架构的服务注册路由。当检测到模式更改时(我为了避免颠簸而去抖动),我取消注册模型,重新打开它,重新注册并刷新路由。可能有办法让商店反映这些变化而不刷新路线,但我找不到它。