ember アプリケーションが初期化された後、いくつかのコードを実行する必要があります。密結合App.ready
を避けるために、このコードを呼び出したくありません。次のようなものがあるとよいでしょう。
App.on 'ready, -> console.log('do stuff')
しかし、Em.Application
オブジェクトはサブスクライブ可能でready
はなく、実際にはイベントではないため、ドキュメントがそう言っているにもかかわらず、機能しません
ember アプリケーションが初期化された後、いくつかのコードを実行する必要があります。密結合App.ready
を避けるために、このコードを呼び出したくありません。次のようなものがあるとよいでしょう。
App.on 'ready, -> console.log('do stuff')
しかし、Em.Application
オブジェクトはサブスクライブ可能でready
はなく、実際にはイベントではないため、ドキュメントがそう言っているにもかかわらず、機能しません
これを実現する簡単な方法は、Application
クラスをEmber.Evented
mixinで拡張することです。
App = Ember.Application.createWithMixins(Ember.Evented, {
ready: function() {
console.log('App ready');
this.trigger('appReady');
}
});
ready
そして、アプリ内のイベント内にフックし、次を使用してカスタム イベントをトリガーします。this.trigger(...)
この時点で.on(...)
、イベントがトリガーされたときに通知を受け取ることができます。
App.on('appReady', function() {
console.log('App already ready');
});
例のデモ。
それが役に立てば幸い。
別の可能性は、アプリケーションの解決コールバックからコードを呼び出すことです。
App.then(function(app) {
console.log("App is resolved, so it's ready");
});
@intuitivepixel から盗んだ例 ;) http://jsbin.com/AdOVala/66/edit
編集/注:
App.then()
http://emberjs.com/deprecations/v1.x/#toc_code-then-code-on-ember-applicationを参照してください。
Ember.DeferredMixin の非推奨の一環として、Ember.Application インスタンス自体で .then を使用することは非推奨になりました。
代わりに、ready フックまたは初期化子を使用して、準備を延期/進めることができます。