2016-06-08 66 views
0

我正在使用Ember CLI 2.5.0。我有以下兩個控制器。我希望頁面控制器在ApplicationController中調用一個方法或一個動作(要麼)。Ember ApplicationController注入不工作

不過,我不斷收到錯誤「的ReferenceError:應用程序沒有定義」

我已經使用較早的「需要」 API嘗試。我嘗試了更老的「controllerFor」方法。我試圖直接訪問應用程序並挖掘到控制器。我最初有一個問題,在一個承諾內調用它,試圖使用「this」關鍵字,但是通過聲明一個局部範圍的變量來解決這個問題。似乎沒有任何工作。我覺得我缺少一些簡單的東西,因爲上述所有方法似乎都適用於其他方法。

在應用程序/控制器/ 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 
     }); 
    } 
}); 

在應用程序/控制器/ 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); 
      }); 
     } 
    }  
}); 

回答

2

您需要this.get('application')訪問應用程序性能。

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

注意在你的匿名函數中傳遞範圍的「胖箭頭」,所以你可以在父範圍中使用「this」。

+0

我很希望我能給你一個虛擬的啤酒。謝謝。 – happygaijin