在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应用程序中的常见挑战。有没有解决这个问题的模式?