从Route内部的Ember setupController调用控制器功能

时间:2015-03-06 13:13:26

标签: javascript ember.js

如何从位于Route中的setupController调用动作把手内的函数。 (另外,我如何调用控制器内的函数而不是路径本身。)

我希望我的页面分析URL参数并根据这些参数填写一些变量。

App.CresRoute = Ember.Route.extend({
  setupController: function(){
    this.send('testFunction', "Print me");
  },

  actions: {
    testFunction: function(string){
        console.log(string);
    },
  }
});

这会返回一个错误:"没有处理函数' testFunction'。"

显然我的方法比较复杂,有很多参数,这只是为了证明这个问题。

2 个答案:

答案 0 :(得分:0)

我已经对此进行了编辑以试图澄清您的问题,但我不确定您的意思是"在setupController"中调用动作把手内的函数。

在您已包含的示例代码中,testFunction要响应,它需要位于路径树的更高位置。行动上升。如果您尝试在控制器上设置变量,那么您可以在setupController挂钩中执行此操作,但您不需要采取措施来执行此操作;只需在动作块之外定义testFunction,并将其称为路线上的常规方法:

App.CresRoute = Ember.Route.extend({
  setupController: function(){
    this.testFunction("Print me");
  },

  testFunction: function(string){
    console.log(string);
  }
});

我不知道Handlebars与这个问题有什么关系,所以我想知道我是否已经理解了你正在尝试做什么?

答案 1 :(得分:0)

这应该对您有用。

App.CresRoute = Ember.Route.extend({
  setupController: function(){
    this.actions.testFunction('Print me');
  },

  actions: {
    testFunction(string){
        console.log(string);
    },
  }
});