在寻找解决方案时,我遇到了一个示例here,其中所有其他视图都从基本视图扩展
在基本视图中
define(function(require) {
var AppView = Backbone.View.extend({
requireLogin: true
});
return AppView;
});
在扩展视图中不需要authenticaton put
requireLogin: false
但无法找到 requireLogin 的实施位置和方式。
另外,在另一个类似的question中,最后一个答案表明相同,但没有谈到如何实现它。
我该如何使用?
答案 0 :(得分:0)
好的,首先,我假设您没有使用像super这样的插件,所以让我建议一下: https://github.com/lukasolson/Backbone-Super
我们希望super与父视图进行通信。说,做这样的事情: (为简单起见,我不会使用define)
/*
Whatever is your process for login, it should inject
this object with a true flag when logged
*/
var CredentialsCollector = {
logged : false
};
var AppView = Backbone.View.extend({
requireLogin: true,
render : function(){
if( requireLogin && !CredentialsCollector.logged ){
//do a redirect to your login module
}
}
});
var SomeView = AppView .extend({
render : function(){
/*
this call the parent render to check the login; if required and not
logged it automatically make the redirection
*/
this._super();
//<- here do your normal render stuff
}
});