在应用程序之外捕获应用程序"就绪"事件

H1D*_*H1D 2 ember.js

我需要在初始化ember应用程序后运行一些代码.我不想调用此代码App.ready以避免紧耦合.有这样的事情会很好:

App.on 'ready, -> console.log('do stuff')
Run Code Online (Sandbox Code Playgroud)

但它不会起作用,因为Em.Application对象不是可订阅的,ready尽管文档说的是这样但事实并非如此

int*_*xel 6

一个简单的方法就是Application使用Ember.Eventedmixin 扩展你的类:

App = Ember.Application.createWithMixins(Ember.Evented, {
  ready: function() {
    console.log('App ready');
    this.trigger('appReady');
  }
});
Run Code Online (Sandbox Code Playgroud)

并且您在ready应用程序内部挂起事件并使用触发自定义事件this.trigger(...)

此时,您可以使用.on(...)在触发事件时收到通知.

App.on('appReady', function() {
  console.log('App already ready');
});
Run Code Online (Sandbox Code Playgroud)

示例演示.

希望能帮助到你.