Emberjs路由

App.Router.map(function() {
  this.resource('topCharts', function() {
    this.route('choose', { path: '/' });
    this.route('albums');
    this.route('songs');
    this.route('artists');
    this.route('playlists');
  });
});

App.TopChartsChooseRoute = Ember.Route.extend({
  beforeModel: function() {
    var lastFilter = this.controllerFor('application').get('lastFilter');
    this.transitionTo('topCharts.' + (lastFilter || 'songs'));
  }
});

// Superclass to be used by all of the filter routes below
App.FilterRoute = Ember.Route.extend({
  activate: function() {
    var controller = this.controllerFor('application');
    controller.set('lastFilter', this.templateName);
  }
});

App.TopChartsSongsRoute = App.FilterRoute.extend();
App.TopChartsAlbumsRoute = App.FilterRoute.extend();
App.TopChartsArtistsRoute = App.FilterRoute.extend();
App.TopChartsPlaylistsRoute = App.FilterRoute.extend();

  

model鉤子包含了基於承諾暫停過渡的許多應用場景,可是有的時候仍是須要beforeModelafterModel這兩個鉤子來提供幫助。最多見的緣由是經過{{link-to}}或者{{transitionTo}}(最爲URL改變致使的過渡的對比)過渡到一個具備動態URL端,這時將過渡到的路由的模型早早就被指定了(例如{{#link-to 'article' article}}或者this.transitionTo('article', article)),這種狀況下,model鉤子並不會被調用。當路由正在收集全部路由的模型來執行過渡時,就須要使用beforeModelafterModel鉤子來處理全部邏輯。?javascript

相關文章
相關標籤/搜索