ember.js emberjs,如何将方法从控制器绑定到服务?

628mspwn  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(150)

我有一个很大的emberjs应用程序,我需要更多地使用ember服务。所以我在我的控制器中有一个方法,我希望它作为一个服务在所有的模态中可用,以及我注入服务的组件。
但是它不起作用,而且没有错误...这是一个很好的方法吗?为什么它不起作用?
所以我在控制器中的方法是:

openModalPrices () {
        //method in controller
    },

该服务还有另一种方法:

openModalPricesFromService () {
        //method in service
    },

在我的控制器INIT中,我是这样绑定的:

init: function() {
   this._super(...arguments);
   this.get('priceService').openModalPricesFromService(this.openModalPrices.bind(this));
}
vaqhlq81

vaqhlq811#

除了从控制器初始化(它是一个单例,因此生命周期/创建不是您本机所期望的),您是否可以使用路由的afterModel钩子?
在2022年,我个人对控制器使用为0,甚至对查询参数也是如此。
要从路由调用您的服务方法,我将执行以下操作:

export default class MyRoute extends Route {
  @service myService;

  afterModel() {
    this.myService.openModalPricesFromService();
  }
}

此外,应该没有必要在emberjs中使用bind--如果您想解决这方面的选项,请随意打开另一个StackOverflow问题〈3

相关问题