7

Ember.jsアプリを構築していますが、すべてがレンダリング/ロードされた後、追加のセットアップを行う必要があります。

そのようなコールバックを取得する方法はありますか?ありがとう!

4

5 に答える 5

10

オーバーロードすることができ、自動的に呼び出されるビューで定義されたいくつかの関数もあります。これらには、、、などwillInsertElement()が含まれます。didInsertElement()afterRender()

特にdidInsertElement()、通常のオブジェクト指向システムではコンストラクターで実行されるコードを実行するのに便利な時期を見つけました。

于 2012-05-01T00:46:35.657 に答える
6

readyのプロパティを使用できますEmber.Application

http://awardwinningfjords.com/2011/12/27/emberjs-collections.htmlからの例:

// Setup a global namespace for our code.
Twitter = Em.Application.create({

  // When everything is loaded.
  ready: function() {

    // Start polling Twitter
    setInterval(function() {
      Twitter.searchResults.refresh();
    }, 2000);

    // The default search is empty, let's find some cats.
    Twitter.searchResults.set("query", "cats");

    // Call the superclass's `ready` method.
    this._super();
  }
});
于 2012-04-30T16:01:31.243 に答える
5

LazyBoyの答えはあなたがやりたいことですが、それはあなたが思っているものとは違った働きをします。あなたの質問の言い回しは、Emberについての興味深い点を浮き彫りにします。

あなたの質問では、ビューがレンダリングされた後にコールバックが必要であると指定しました。ただし、適切な「Ember」スタイルの場合は、アプリケーションが初期化された後、ビューがレンダリングされる前に起動する「ready」コールバックを使用する必要があります。

重要な概念上のポイントは、コールバックがデータモデルを更新した後、Emberにビューを更新させる必要があるということです。

残り火にビューを更新させるのはほとんど簡単です。ビュー内の状態遷移のちらつきを回避するために、「didFoo」コールバックを使用する必要があるエッジケースがいくつかあります。(たとえば、0.2秒間「アイテムが見つかりません」と表示しないようにします。)

それでもうまくいかない場合は、「onLoad」コールバックを調べることもできます。

于 2012-05-20T16:44:57.360 に答える
3

これには、jQueryajaxコールバックを使用できます。

$(document).ajaxStart(function(){ console.log("ajax started")})
$(document).ajaxStop(function(){ console.log("ajax stopped")})

これはすべてのajaxリクエストで機能します。

于 2013-02-11T21:24:37.267 に答える
1

これをアプリケーションルートに入れるだけです

actions: {
    loading: function(transition, route) {

        this.controllerFor('application').set('isLoading', true);

        this.router.on('didTransition', this, function(){
          this.controllerFor('application').set('isLoading', false);
        });
    }
}

そして、テンプレートのどこでも、{{#if isLoading}}を使用して読み込みを有効または無効にするか、実際の読み込みアクション内に特別なjQueryイベントを追加できます。

非常にシンプルですが効果的です。

于 2015-07-09T03:12:33.487 に答える