1

うまく機能するシンプルなバックボーンアプリを作成しました。今、私は問題を抱えている問題を解決する必要があります。だから私はアドバイスを求める。

ユーザー/グループごとに、モデル/コレクションを読み取り専用または編集可能にする必要があります。

私の最初の考えは、2 つのテンプレート (読み取りと編集) とそれぞれのビューを作成することでした。(疑似コード):

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>

input代わりにまたはタグを選択するためにJavaScriptをインライン化する方が良いでしょうか、それともdiv私が考えていないより良い解決策があるでしょうか?

4

1 に答える 1

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()は、要求されたルートに関連付けられたブール値を返すだけです。

バックエンドの権限はグループによって制限されているため、ユーザーが編集可能なページにアクセスするためにこれらのブール値を手動で変更した場合でも、バックエンドでデータを操作する権限がありません。

また、私の場合、編集可能/静的ビューはかなり異なるため、2 つの別々のテンプレートを作成しました。

于 2013-06-09T22:42:20.117 に答える