【问题标题】:call another controller method from an action method in emberjs从 emberjs 中的操作方法调用另一个控制器方法
【发布时间】:2014-12-16 22:01:48
【问题描述】:

我正在尝试从操作方法调用第二个控制器方法。 我可以使用

调用第二个控制器方法
this.controller.get('controllers.secondController').method();

如何从动作方法调用另一个控制器的方法? 我知道有一些解决方法,比如调用当前操作方法的控制器,然后调用第二个控制器方法。

this.callFirstControllerMethod();

然后使用

this.controller.get('controllers.secondController').method();

但是有没有办法直接调用第二个控制器方法呢?

【问题讨论】:

    标签: ember.js controller


    【解决方案1】:

    通常这种逻辑不应该在控制器上,控制器应该只有与 UI 或模型显示相关的操作。

    我建议在路由中添加一个动作,它可以访问控制器并调用您需要的任何方法。

    // route.js
    actions: {
      doSomething: function() {
        var controllerA = this.controllerFor('firstController');
        var controllerB = this.controllerFor('secondController');
    
        controllerA.doSomething();
        controllerB.doSomethingElse();
      }
    }
    

    【讨论】:

    • 我正在调用的第二个控制器正在获取一些不特定于当前页面的数据,例如需要在其他页面中使用的数据。所以我在第二个控制器中获取这些数据,并在我的第一页上的一个操作中调用第二个控制器方法来获取数据。从设计的角度来看,这是正确的方法吗?
    猜你喜欢
    • 2013-10-05
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多