0

/ルートが訪問されるたびにコードを実行するにはどうすればよいですか?

私は今これを持っています:

App.indexController = Ember.Controller.extend({
    showFront: function () {
        alert("zzz");
    }
});

しかし、私は立ち往生しています。実際に機能させるにはどうすればよいですか?

4

2 に答える 2

1

beforeModelsetupControllerフックを使用して、ルートがロードされたときにコードを実行できます。

App.Router.map(function(){
  this.resource('posts', { path: '/posts' }, function() {});
});

App.PostsRoute = Ember.Route.extend({
  // http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel
  beforeModel: function() {
    console.log("beforeModel fired");
  },

  // http://emberjs.com/api/classes/Ember.Route.html#method_setupController
  setupController: function(controller, model){
    this._super(controller, model);
    console.log("setupController fired");
  },

  model: function(){
    // resolve the promise after a short delay
    return Ember.RSVP.Promise(function(resolve, reject){
      setTimeout(function(){
        resolve(true);
      }, 2000);
    });
  }
});

beforeModel名前が示すように、モデルがロードされる前に起動し、モデルがロードsetupControllerされた後に起動します。JSBin の例では、遅延読み込みモデルを使用して違いを示しています。

App.Postこの例はルートに使用されているフックを示していますがApp.ApplicationRoute、デフォルト ルートをロードするときにコードを実行する場合は、これを使用できます。

JSBin の例

于 2013-10-12T23:25:11.030 に答える