2

ember アプリケーションが初期化された後、いくつかのコードを実行する必要があります。密結合App.readyを避けるために、このコードを呼び出したくありません。次のようなものがあるとよいでしょう。

App.on 'ready, -> console.log('do stuff')

しかし、Em.Applicationオブジェクトはサブスクライブ可能でreadyはなく、実際にはイベントではないため、ドキュメントがそう言っているにもかかわらず、機能しません

4

2 に答える 2

6

これを実現する簡単な方法は、ApplicationクラスをEmber.Eventedmixinで拡張することです。

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');
});

のデモ

それが役に立てば幸い。

于 2013-09-16T14:37:37.867 に答える
2

別の可能性は、アプリケーションの解決コールバックからコードを呼び出すことです。

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 フックまたは初期化子を使用して、準備を延期/進めることができます。

于 2013-09-16T16:14:23.830 に答える