从emberjs中的控制器动作调用方法

MBe*_*mam 24 ember.js

例如,我有一个像这样的控制器:

App.theController = Ember.ArrayController.extend({
  methodA:funtcion() {},
  actions: {
    methodB:function(){},
    methodC:function(){}
  }
});
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. methodB如何调用methodC
  2. 方法A如何调用methodB

int*_*xel 45

您必须使用this.send([methodName])才能正确调用您的方法:

var App = Ember.Application.create({
  ready: function() {
    console.log('App ready');
    var theController = App.theController.create();
    theController.send('methodC');
  }
});

App.theController = Ember.ArrayController.extend({
  methodA:function(){
    //How can methodA calling methodB
    this.send('methodB');
    console.log('methodA called');
  },
  actions:{
    methodB:function(){
      //How can methodB calling methodC
      this.send('methodC');
      console.log('methodB called');
    },
    methodC:function(){
      console.log('methodC called');
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

这里有一个简单的jsbin作为游乐场.

希望能帮助到你.

  • 作为最佳实践的问题,`this.send`应该用于处理一些用户/事件生成的"动作"(通常通过`{{action}}`帮助程序隐式).它不应该用作调用方法的一般方法.如果需要从非操作上下文中调用操作处理程序中的代码,请将其提取到自己的方法中,并从操作处理程序上下文和其他上下文委托给它. (3认同)