2013-12-12 38 views
0

在查找溶液I跨一個示例here其中所有其它視圖是從基本視圖加載骨幹觀點基於認證

延伸在基本視圖

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

return AppView; 
}); 

而且在伸出的觀點這別來噸需要authenticaton把

requireLogin: false 

但是找不到在哪裏以及如何爲requireLogin實施。

此外,在另一個類似question最後的答案暗示相同,但​​不會談論如何實現它。

我該如何使用它?

+0

你在哪裏找到你的榜樣? –

+0

requireLogin只是爲每個視圖定義的屬性。你可以根據需要使用它,但是有一種可能性是在render()方法中添加一些代碼,在這個方法中檢查這個屬性,如果它是真的,檢查用戶是否被認證。如果他們不是,將它們重定向到登錄頁面。 –

+0

@JonathanNaguin我已經更新了這個問題,並帶有示例的鏈接以及與此類似的另一個stackoverflow問題 – Sami

回答

0

好吧,首先,我要假設你沒有使用像超級插件,所以讓我建議它: https://github.com/lukasolson/Backbone-Super

我們想超到與父視圖通信。說,做這樣的事情: (爲簡單起見我不會用定義)

/* 
    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 
    } 

}); 
+0

根據TNguyen的建議(在評論中)我已經解決了它。礦山解決方案與上述解決方案類似。我本來要回答它,爲時已晚:D。但是我會接受你的答案,詳細回答並指出超級插件(我正在做這個時髦的方式)。謝謝 – Sami