Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 基于身份验证加载主干视图_Backbone.js_Views - Fatal编程技术网

Backbone.js 基于身份验证加载主干视图

Backbone.js 基于身份验证加载主干视图,backbone.js,views,Backbone.js,Views,在寻找解决方案时,我遇到了一个示例,其中所有其他视图都是从baseview扩展而来的 在基本视图中 define(function(require) { var AppView = Backbone.View.extend({ requireLogin: true }); return AppView; }); 在扩展视图中,不需要验证 requireLogin: false 但是找不到在哪里以及如何实现requireLogin 另外,在另一个类似的例子中,最后一个答

在寻找解决方案时,我遇到了一个示例,其中所有其他视图都是从baseview扩展而来的

在基本视图中

 define(function(require) {
   var AppView = Backbone.View.extend({
   requireLogin: true
 });

 return AppView;
});
在扩展视图中,不需要验证

  requireLogin: false
但是找不到在哪里以及如何实现requireLogin

另外,在另一个类似的例子中,最后一个答案提出了相同的建议,但没有讨论如何实现它


我如何使用它?

好的,首先,我假设您没有使用像super这样的插件,所以我建议您:

我们希望super与父视图通信。他说,做这样的事情: (为了简单起见,我不会使用define)

/*
无论您的登录过程是什么,它都应该注入
此对象在记录时具有true标志
*/
var CredentialsCollector={
记录:错误
};
var AppView=Backbone.View.extend({
是的,
render:function(){
if(requireLogin&!CredentialsCollector.logged){
//重定向到您的登录模块
}
}
});
var SomeView=AppView.extend({
render:function(){
/*
这将调用父呈现来检查登录;如果需要,则不需要
它会自动进行重定向
*/
这个;

//在哪里可以找到您的示例?requireLogin只是为每个视图定义的属性。您可以按照自己的意愿使用它,但一种可能是向render()添加一些代码方法,检查该属性,如果该属性为真,则检查用户是否经过身份验证。如果用户未通过身份验证,则将其重定向到登录页。@JonathanNaguin我已使用指向示例的链接和另一个类似于的stackoverflow问题更新了该问题this@TNguyen在render方法中选中它是什么意思?如果我我将再次检查用户是否在呈现方法中经过身份验证。请您提供一个伪代码。基于该示例代码,我也不知道他们在哪里实现requireLogin功能。不过,一般来说,我的意思是,您必须在代码中找到某个点-在呈现或显示视图-在其中可以检查该属性,如果该属性为真,则根据需要检查其身份验证和重定向。基于TNGYEN建议(在注释中)我已经解决了。我的解决方案与你的解决方案中所述的方式类似。我本来打算自己回答的,但为时已晚:D。但我会接受你的回答,因为你的回答很详细,并向超级插件指出(我用了很时髦的方式)。谢谢
/*
  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
    }

});