emberjs - 控制初始化程序的运行时间

时间:2015-03-12 22:03:30

标签: ember.js

我有一些代码可以引发一个基本的pubsub事件:

export default Ember.Service.extend(ConnectListenersMixin, {
  onGetInitial: function() {
    this.trigger('listUpdated', payload);
}

最终触发事件的请求来自路由的beforeModel挂钩:

  beforeModel: function() {
    this.TodoActions.getTodos();
  }

问题是订阅此事件的代码是在组件的init事件中生成的:

export default Ember.Mixin.create({
  connect: Ember.on('init', function(){
    // subscribing code
  })
});

首次加载应用程序时,会在订阅代码运行之前触发事件。组件初始化后,一切都很好。

有没有办法可以提前初始化组件,以便在引发事件之前全部订阅它们?

我不确定初始化程序可以使用哪些事件,我唯一知道的是registerComponentLookup,例如

before: 'registerComponentLookup'

无论如何围绕这个?

我尝试不使用proimises而不使用模型钩子,所以请不要建议。我知道这一切。

1 个答案:

答案 0 :(得分:0)

当Ember发现需要实例化时,组件会被实例化。如果组件是从Handlebars模板实例化的,那么这很自然地在模型钩子之后,你无能为力。事实上,模型挂钩完成之前,模板甚至不会渲染。

我会看看从控制器进行订阅,让它发出事件,触发组件上的事件,或者只是存储数据,以便组件可以绑定到它。但是,我没有足够的关于您的用例的信息来说明哪个(或者如果有的话)最好。