2013-01-19 45 views
1

我創建了一個簡單的主幹應用程序,效果很好。 現在我需要解決一個問題,我遇到了麻煩。所以我尋求建議。基於用戶組的主幹讀取/編輯視圖

我需要以每個用戶/組爲基礎來表示我的模型/集合,只讀或可編輯。

我最初的想法是,創建兩個模板(讀取和編輯)和它們各自的視圖。 (僞代碼):

var appRouter = Backbone.Router.extend({ 
    routes: { 
     '' : 'schedule', 
    } 
    schedule: function() { 
    this.collection = new Collection(); 
    this.collection.fetch({success:function(resp) { 
            if (resp.group == 'allowedToEdit') 
            myview = new editView(this.collection); 
            else 
            myview = new readView(this.collection); 
            }}); 
}); 

這種做法捲起我不必重複模板:

<script type="text/template" id="edit-template"> 
    <div class="myclass"> 
    <input class="fn" type="text" value="<%= (fn) != '' ? fn : 'default' %>"> 
    </div> 
</script> 

<script type="text/template" id="static-template"> 
    <div class="myclass"> 
    <div class="fn"><%= fn %></div> 
    </div> 
</script> 

它會更好,以在線的JavaScript用於選擇inputdiv標籤代替或者可能有沒有更好的解決方案,我沒有想到?

回答

0

這是我落得這樣做:

我創建了一個包含用戶的喜好和布爾值,如果用戶可以編輯或不(基於用戶權限的數據庫返回)用戶模型。

產生的代碼是:

var appRouter = Backbone.Router.extend({ 
    routes: { 
    '' : 'schedule', 
    } 
    schedule: function() { 
    this.collection = new Collection(); 
    this.collection.fetch({ 
     success:function(resp) { 
     myview = user.schedule() ? new editView(this.collection) 
           : new readView(this.collection); 
     myview.render(); 
    }}); 
}); 

函數user.schedule()只是返回與所請求的路由相關的布爾值。

後臺權限受到組限制 - 所以如果用戶手動更改這些布爾值 來訪問可編輯頁面 - 他們仍然沒有權限在後端操作數據。

另外,就我而言,可編輯/靜態視圖是完全不同的,所以我創建了兩個單獨的模板。