2013-04-04 200 views
0

從觀察者呼叫控制器內的功能我有這樣在灰燼

App.TestController = Ember.ArrayController.extend({ 
    navigation:[], 
    somefunc:function(){ 
     //do something 
    } 
}); 

控制器和有

globalvars = Ember.Object.create({ 
    page : 1, 
}); 

globalvars.addObserver('page', function() { 
    this.get('controller.controllers.Test').somefunc(); 
}); 

問題的觀察者是,我不能把裏面的功能控制器。

+0

我不知道是否還有其他錯誤,但在'this.get('controller.controllers.Test')。somefunc();''test「需要小寫,我想。 – 2013-04-04 11:03:16

+0

TypeError:this.get(...)未定義 [Break On This Error] \t this.get('controller.controllers.test')。somefunc();我得到這個錯誤 – Fahim 2013-04-04 11:27:09

+0

你應該更詳細地解釋你正在努力完成什麼。您試圖以奇怪的方式訪問控制器。並非每個Ember對象都必須訪問每個控制器。你的方法無法工作。 – mavilein 2013-04-04 11:36:55

回答

2

正如我在我的評論已經提到的,在這裏免責聲明:

You should explain in more detail, what you are trying to accomplish. You are trying to access the controller in a strange way.

但在這裏是一種方法,如果你絕對要做到這一點是這樣的:

var App = Ember.Application.create({}); 
// put the global vars into the App object instead of polluting the global namespace 
App.globalvars = Ember.Object.create({ 
    page : 1, 
}); 

而不是把觀察員在globalVars對象中,我會在控制器中聲明觀察者:

App.TestController = Ember.ArrayController.extend({ 
    navigation:[], 
    somefunc:function(){ 
     //do something 
    }, 
    globalVarsPageObserver : function(){ 
     this.somefunc(); 
    }.observes("App.globalvars.page") 
});