ember验证beforeModel中的会话

时间:2014-02-07 13:40:49

标签: model-view-controller ember.js

我的节点服务器每次在/ session上执行get请求时都会返回有关用户的信息。

我想在我的一条路线上验证beforeModel中的会话,如果会话已设置好,我只是让用户加载模型,否则我会在登录页面上发送他的transitiontoroute,但它没有'似乎工作..

我从服务器得到了正确答案,但我无法弄清楚如何使用它。

    App.HomeRoute = Ember.Route.extend({
    beforeModel: function() {
        if (this.isSession() == true) {
            console.log('OK continue');
        }
        else {
            console.log('GTFO');
            this.transitionToRoute('login');
        }
    },
    model: function() {
        return this.store.all('user');
    },
    isSession: function() {
        $.ajax({
            url: host + 'mdf/session',
            type: 'GET',
            accepts: 'application/json',
            success: function(data) {
                console.log('DEBUG: GET Session OK');
                return true;
            },
            error: function() {
                console.log('DEBUG: GET Session Failed');
                return false;
            }
        });
    }
});

我在使用GTFO日志之前尝试在没有登录的情况下访问我的/ home时出现此错误。

Error while loading route: TypeError: Object [object Object] has no method 'transitionToRoute'

问题是当我登录时我也有GTFO消息...我已经检查了我的isSession的返回并且它'未定义'?!?

但我也记录了日志,说我的会话确定了。

我有点迷失...

1 个答案:

答案 0 :(得分:1)

在路线中,您使用this.transitionTo('route')而不是this.transitionToRoute('route')transitionToRoute用于控制器,而transitionTo用于路径