Ember ApplicationController注入不起作用

时间:2016-06-08 19:48:17

标签: ember.js

我使用的是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);
            });
        }
    }    
});

1 个答案:

答案 0 :(得分:2)

您需要使用this.get('application')访问应用程序属性。

page.get('fieldValues').then(() => {
   this.get('application').displayModal('page-edit-fields-modal', page);
});

注意"胖箭头"它将范围传递给您的匿名函数,因此您可以使用"这个"来自父范围。