【问题标题】:Calling controller method from controller action in Ember 2.0从 Ember 2.0 中的控制器操作调用控制器方法
【发布时间】:2015-09-25 12:07:49
【问题描述】:

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不可用

【问题讨论】:

标签: javascript ember.js


【解决方案1】:

您提供的相关代码有错误:

SyntaxError: controllerName.js: unknown: Unexpected token (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);
      }
   }
});

【讨论】:

  • 感谢您的全面回复。它确实有效。在我的情况下,调用实际上来自 window 对象,因此 this 指向窗口,而不是 ember 对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多