Ember.js 从Ember中的observer调用控制器内的函数

Ember.js 从Ember中的observer调用控制器内的函数,ember.js,Ember.js,我有一个这样的控制器 App.TestController = Ember.ArrayController.extend({ navigation:[], somefunc:function(){ //do something } }); 并有一名观察员 globalvars = Ember.Object.create({ page : 1, }); globalvars.addObserver('page', function() { t

我有一个这样的控制器

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();
});

问题是我无法调用控制器内部的函数。

正如我在评论中提到的,这里有一个免责声明:


你应该更详细地解释你想要完成的事情。 您试图以一种奇怪的方式访问控制器

但如果你必须这样做,这里有一个方法:

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")
});

我不知道是否还有其他错误,但是在
this.get('controller.controllers.Test').somefunc()中“test”需要小写,我想。TypeError:this.get(…)未定义[Break On this Error]this.get('controller.controllers.test').somefunc();我发现了这个错误,你应该更详细地解释一下,你想完成什么。您试图以一种奇怪的方式访问控制器。并非每个余烬对象都必须访问每个控制器。您的方法无法工作。工作是在用户单击锚定并使用ajax将数据填充到站点时调用函数。我试图在用户单击锚点并调用此函数执行ajax请求时设置一个变量值。