我使用的是Ember CLI 2.5.0。我有以下两个控制器。我希望页面控制器在ApplicationController中调用方法或操作(或者将要执行)。
但是,我一直收到错误" ReferenceError:应用程序未定义"
我尝试过使用旧的"需求" API。我尝试过更老的" controllerFor"方法。我尝试直接访问应用程序并深入到控制器。我最初在承诺中调用此问题并试图使用"这个"关键字,但通过声明一个本地范围的var来解决这个问题。似乎没有什么工作。我觉得我错过了一些简单的东西,因为所有上述方法似乎都适用于其他人。
在app / controllers / application.js中:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
showModal: function(name, model) {
this.displayModal(name, model);
},
removeModal: function() {
this.disconnectOutlet({
outlet: 'modal',
parentView: 'application'
});
}
},
displayModal: function(name, model) {
console.log(model);
this.render(name, {
into: 'application',
outlet: 'modal',
model: model
});
}
});
在app / controllers / pages.js中:
import Ember from 'ember';
export default Ember.Controller.extend({
application: Ember.inject.controller(),
actions: {
editPageFields: function(page) {
page.get('fieldValues').then(function(){
application.displayModal('page-edit-fields-modal', page);
});
}
}
});
答案 0 :(得分:2)
您需要使用this.get('application')
访问应用程序属性。
page.get('fieldValues').then(() => {
this.get('application').displayModal('page-edit-fields-modal', page);
});
注意"胖箭头"它将范围传递给您的匿名函数,因此您可以使用"这个"来自父范围。