次のバックボーン アプリケーションがあります。
これは、次のテンプレートを使用した一般的な crud ビューです。
<div id="<%= crudId %>">
<div class="header-view"></div>
<div class="table-view"></div>
<div class="form-view"></div>
</div>
ここでクラッドのライブを見ることができます: http://bbbootstrap.com.ar/index.html#Wine
ビュー自体にはサブビューがあり、テーブル ビューとフォーム ビューでレンダリングされます。
問題は、それを基本のcrudビューにして、新しいサブビューを追加して簡単に拡張できるようにしたいということです。たとえば、新しいパネルを追加していくつかの一括操作を発行します。
これらは私がこれまでに思いついた可能な解決策です
1- 継承: CrudView から継承する新しい CrudBulkView を作成し、一括ビュー プレース ホルダーを持つようにテンプレートを変更します。
長所: 継承は非常にエレガントでシンプルなソリューションを提供できます。
2- addView(view, place) のようなメソッドを crudview に追加し、place を「beforeForm」、「afterForm」、「beforeTable」などにします... (ハードコーディングしすぎです...
短所:ハードコードが多すぎる
3-追加したい各サブビューで関数を渡します。これは、CrudViewがコンテナーをレンダリングした直後に、DOMの作成とそれにアタッチを処理します。このメソッドは setEl と呼ばれ、新しく作成された el を返すことができます。
長所: 非常に柔軟です 短所: サブビューを dom にアタッチするプロセスが複雑になります
4-crudView テンプレートを変更してから、次のようにアタッチします。
<div id="<%= crudId %>">
<div class="header-view"></div>
<div class="table-view"></div>
<div class="form-view"></div>
<div class="bulk-view"></div
</div>
次に、bulkView.el は「.bulk-view」になります
長所: 単純なアプローチ 短所: dom を処理する代わりに、文字列をいじる必要があります
私が達成しようとしていることはそれほど奇妙ではないと思います。ビューをコンテナー ビューに追加し、可能な限り分離し、レンダリングする場所を確立できるようにしたいだけです。