从Ember 2.0中的控制器操作调用控制器方法

时间:2015-09-25 12:07:50

标签: javascript ember.js

Ember 2.0真的让我很难理解新功能。我想从动作函数中调用控制器中的方法,但似乎没有找到方法。已经浪费了一些时间

我已经读过这个:calling method from action of controller in emberjs但它只适用于Ember 1.x,因为在Ember 2.0中没有ArrayController,我不能使用this.send()。

基本上我需要的是:

App.SomeController = Ember.Controller.extend({
   methodFunction: function(data) {
      console.log("YEY", data);
   }
   actions: {
      sessionAction: function(data) {
          this.methodFunction(data);
      }
   }
});

问题是this.methodFunction不可用

1 个答案:

答案 0 :(得分:2)

您提供的代码有错误:

  

SyntaxError:controllerName.js:unknown:意外的令牌(7:3)(...)

,声明后你遗漏了methodFunction。修正:

App.SomeController = Ember.Controller.extend({
   methodFunction: function(data) {
      console.log("YEY", data);
   },
   actions: {
      sessionAction: function(data) {
          this.methodFunction(data);
      }
   }
});

对于模板:

<button {{action 'sessionAction' 'Example data'}}>Send session action</button>

它正确记录:

  

YEY示例数据

顺便说一下,您还可以利用ES2015语法:

export default Ember.Controller.extend({
   methodFunction(data) {
      console.log("YEY", data);
   },
   actions: {
      sessionAction(data) {
          this.methodFunction(data);
      }
   }
});