2013-10-12 1 views
0

Как я могу выполнить код кода, когда / маршрут посещен?Как я могу сделать код, выполняемый каждый раз, когда индекс попадает?

У меня это сейчас:

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

Но я застрял. Как я могу заставить его работать на самом деле?

ответ

1

Вы можете использовать beforeModel и setupController крюки для выполнения кода, когда маршрут будет загружен.

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 example

1

Сначала вам нужно определить маршрут, а затем вызвать функцию на нем.

Узнайте, как здесь:

http://emberjs.com/guides/routing/defining-your-routes/

+0

Это не работает: App.IndexRoute = Ember.Route.extend ({ setupController:. Функция (контроллер) { $ ('# аутентификации') показывают();} }) ; –

Смежные вопросы