0

我对backbone.js 很陌生。我有以下设置

Scripts
|--App
|   |--collecions
|   |    |----students.js
|   |--model
|   |    |---student.js
|   |--views
|   |    |---Header-View.js
|   |    |---Stud-List-View.js
|   |    |---Stud-Item-List-View.js
|   |    |---StudView.js
|   |--app.js
|--Templates
|   |-----Header.htm
|   |-----StudTable.htm
|   |-----student.htm
|--main.js

StudTable.html 是这样的 -----

<table class="table table-condensed table-bordered">
<caption>Student Details </caption>
<thead>
    <tr>
        <th>
            First Name
        </th>
        <th>
            Last Name
        </th>
        <th>
            Age
        </th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>
            {{firstname}}
        </td>
        <td>
            {{lastname}}
        </td>
        <td>
            {{age}}
        </td>
    </tr>
</tbody>

如何渲染从这里发送的集合

function ($, _, Backbone, Student, StudList, HeaderView, StudView, ListView, CloneView) {
 var AppView = Backbone.Router.extend({
     routes: {
         "": "list",
         "students/clone": "clone",            
     },

     initialize: function () {
         var view = new HeaderView();
         return this;
     },
     clone: function () {
         var studs = new StudList();
         studs.fetch({
             success: function () {
                 $("#content").html(new CloneView({ collection: studs }).el);
             }
         });
     },

 });    

 return AppView;
});

如何在 jQuery 克隆的帮助下在表格中显示集合而不触及 html 模板的格式?有什么方法可以为集合中的每个元素克隆到表中?

我不想使用像this question这样的两个视图

使用下划线模板引擎渲染 Html 表格

他们使用了两种视图:一种用于 tbody,另一种用于将 tr 附加到 tbody。我想在上面提到的模板的帮助下在一个视图中完成。有可能这样做吗?

4

1 回答 1

0

根据评论,您应该使用 2 个视图和 2 个模板。我根本看不到原始帖子中的“克隆”机制有任何优势——这不是主干方式!

主 App 视图将呈现主页 HTML,每个单独<tr>的视图将代表数据库/数据模型中的一条记录。因此,渲染主 App 视图,然后遍历您的 JSON 响应以<tr>单独渲染每个视图。

从那里,您可以轻松地添加、删除和排序行。因为每个视图都将直接绑定到模型实例,所以两者可以非常轻松地相互“对话”(耶,Backone!)。

当我刚开始时,这个网站帮助我学习了组织我的 Backbone 应用程序的最佳方式: http ://ricostacruz.com/backbone-patterns/#sub_views

于 2012-08-29T14:26:56.750 回答