0

ApplicationController init イベントのメタ タグから現在のユーザーを取得しています。

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');
    }
  }
});

問題は、Route リダイレクト イベントが ApplicationController.init の前に発生することです。

これを実現する適切な方法は何ですか?

ありがとう!

4

1 に答える 1

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);
    }
  }
});
于 2013-08-17T01:56:41.860 に答える