根据身份验证加载骨干视图

时间:2013-12-12 14:45:33

标签: backbone.js views

在寻找解决方案时,我遇到了一个示例here,其中所有其他视图都从基本视图扩展

在基本视图中

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

 return AppView;
});

在扩展视图中不需要authenticaton put

  requireLogin: false

但无法找到 requireLogin 的实施位置和方式。

另外,在另一个类似的question中,最后一个答案表明相同,但没有谈到如何实现它。

我该如何使用?

1 个答案:

答案 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
    }

});