我使用的是Ember CLI 2.5.0。我有下面两个控制器。我希望页面控制器在ApplicationController中调用一个方法或一个操作(这两种操作都可以)。
但是,我仍然得到错误"ReferenceError: application是未定义的“。
我试过使用旧的“需要”API。我尝试了更老的"controllerFor“方法。我试着直接访问应用程序,然后深入到控制器。一开始,我遇到了一些问题,在一个承诺中调用它并试图使用" this“关键字,但是通过声明一个本地范围的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
});
}
});应用程序/控制器/页面中的:
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);
});
}
}
});发布于 2016-06-08 19:56:49
您需要使用this.get('application')访问应用程序属性。
page.get('fieldValues').then(() => {
this.get('application').displayModal('page-edit-fields-modal', page);
});请注意"fat箭头“,它传递匿名函数中的作用域,因此您可以使用父作用域中的"this”。
https://stackoverflow.com/questions/37711629
复制相似问题