我为这条路线设置了一个控制器,控制器中的其他所有功能似乎都很好。我试图将元值从路由传递给控制器中的变量,我得到一个控制台错误:
Error: Property set failed: object in path "controller" could not be found or was destroyed.
这是我路线中的相关摘录:
model(params){
let someVariable = this.store.query('somePath', params);
someVariable.then((results) => {
this.set('controller.totalPages', results.get('meta.page_count'))
});
return someVariable;
}
在控制台错误中有问题的行是这一行
this.set('controller.totalPages', results.get('meta.page_count'));
另一个有趣的片段是,当我在数据表中排序并再次提出模型请求时,我的' totalPages'变量最终按预期显示(使用元值),它在我看不到的初始页面加载上。
答案 0 :(得分:2)
执行model
挂钩时,尚未设置controller
。检查路由生命周期 - 控制器在model
之后可用,afterModel
等不仅返回,而且它们返回的承诺已经解决。您应该将逻辑移到setupController
。
model(params) {
return this.store.query('somePath', params);
},
setupController(controller, model) {
controller.set('totalPages', model.get('meta.page_count'));
this._super(...arguments);
}
或者,您可以跳过setupController
并在控制器中添加别名:
totalPages: Ember.computed.alias('model.meta.page_count')