我发现Ember.get在刷新事件时的行为不一致(Ember.run循环用于观察者/计算属性)。 我有一个子控制器,试图获取其父控制器的模型:
App.ParentRoute: Ember.Route.extend({
queryParams:{
someProperty: {
refreshModel: false,
replace: true
}
model: function(params){
return this.store.find('parent-model', params.id, {reload:true}
........
});
App.ParentChildController = Ember.Controller.extend({
parent: Ember.inject.controller(),
someProperty: Ember.computed.alias('parent.someProperty'),
anObserver: function(){
var someRelation = this.get('parent.model.someRelation'); // problem line
}.observes('someProperty').on('init')
});
App.ParentModel = DS.Model.extend({
someRelation: hasMany('relation', { async: false });
....
});
它适用于控制器初始化。但在父刷新时会引发错误:
TypeError:this.get(...)未定义
someRelation是一个async = false关系,它是侧面加载的。因此,如果我在问题行上设置断点,则以下方法有效:
this.get('parent.model').get('someRelation');
出了什么问题?