2013-08-16 4 views
0

Я выборка текущего пользователя из мета-тега в ApplicationController иницилизации события:порядка событий в ember.js (ApplicationController и маршруте)

App.ApplicationController = Ember.Controller.extend({ 
    needs: ['currentUser'], 

    init: function() { 
    'use strict'; 

    this._super(); 

    var attributes = $('meta[name="current-user"]').attr('content'); 

    if (attributes) { 
     this.set('controllers.currentUser.content', App.User.create().setProperties(JSON.parse(attributes))); 
    } 
    }, 

И в каждом маршруте, где пользователь должен быть проверка подлинности у меня есть перенаправлять крюк, который должен перенаправлять если CurrentUser не установлен:

App.UserEditRoute = Ember.Route.extend({ 
    redirect: function() { 
    if (this.controllerFor('currentUser').get('isSignedIn') === false) { 
     this.transitionTo('user.login'); 
    } 
    } 
}); 

вопрос заключается в том, что маршрут перенаправления событие стрельбы до ApplicationController.init.

Каков правильный способ добиться этого?

Спасибо!

ответ

1

Вместо ApplicationController.init() эта логика принадлежит к маршруту. Что-то вроде этого должно работать:

App.ApplicationRoute = Ember.Route.extend({ 
    beforeModel: function() { 
    var attributes = $('meta[name="current-user"]').attr('content'); 
    if (attributes) { 
     var user = App.User.create().setProperties(JSON.parse(attributes)); 
     this.controllerFor('currentUser').set('content', user); 
    } 
    } 
}); 
+0

Thanks Mike. Есть ли лучший способ избежать необходимости кодировать это в каждом маршруте? – Rudi

+0

Это нужно только в App.ApplicationRoute –

+0

работает как очарование. – Rudi

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