如何在Marionettejs中渲染布局视图之前先检查登录?

时间:2016-07-18 16:55:46

标签: javascript marionette

在marionettejs布局视图中,我想检查用户是否是lgoin(异步),然后仅在用户登录时呈现布局,或者转到登录URL。

挑战是api调用是异步的,并且当api获取数据时,页面已经在浏览器中呈现。在Marionettejs中,布局渲染是自动的。这是我的代码:

var DashboardLayout = Mn.LayoutView.extend({
    initialize: function () {
    },
    el: '#app-container',
    template: require('./dashboard.layout.html'),
    regions: {
        /* Building region is only trigger during the new */
    },
    onBeforeRender: function () {
        var thisView = this; 
        api.company.getInfo() // get some data to see if user is login
            .then(function(result){

                if(result.code !== 2000) {
                    // not login, or can't find user
                    Backbone.history.navigate('/login', true);
                } else {
                    appData.company = result.company;
                }
                console.log(appData);
            });
    },
    onRender: function () {
        this.addRegion('nav', '#vs-nav-region');
        this.addRegion('header', '#vs-header-region');
        this.addRegion('content', '#vs-content-region');
        this.addRegion('modal', '#vs-modal');

        var ss = new Nav();
        var navRegion = this.getRegion('nav');

        navRegion.show(ss);

    }
}); 

我在onBeforeRender中获取数据,我想只在用户登录时才渲染布局。

但布局渲染是自动的,不受我的控制。我认为这是Marionettejs应用程序中的常见挑战。有没有解决这个问题的模式?

0 个答案:

没有答案