2

我对视图渲染有点迷茫——第一次尝试这样做。我的模板设置类似于此应用程序。

到目前为止,我已经为 CompositeView 渲染了模板,但它没有渲染任何 ItemView。它甚至不会触发渲染方法来尝试调试,所以我不确定我可以在哪里记录片段以查看它卡在哪里......这是代码:

这是我的项目视图:

define([
    'jquery', 
    'underscore', 
    'backbone',  
    'text!templates/service/item.ejs'
], function($, _, Backbone, template) {
        ServiceItemView = Backbone.Marionette.ItemView.extend({
            tagName: 'tr',
            template: '#service-item-template'
        });
    }
);

这是我的 CompositeView:更新:在我的 requirejs 代码中添加以显示在 ServiceTableView 之前加载了 ServiceItemView

define([
    'jquery', 
    'underscore', 
    'backbone', 
    'views/service/item', 
    'text!templates/service/table.ejs'
], function($, _, Backbone, ServiceItemView, template) {
    var ServiceTableView;
        ServiceTableView = Backbone.Marionette.CompositeView.extend({
            tagName: 'table',
            id: 'service-table', 
            itemView: ServiceItemView, 
            itemViewContainer: 'tbody', 
            template: '#service-table-template', 

            appendHtml: function(collectionView, itemView){
                console.log("here");
                //collectionView.$("tbody").append(itemView.el);
            }
        });
    }
);

这是我尝试渲染它的地方:

    service_collection = new ServiceCollection([
        new Service({ 
            name: "Men's Cut", 
            length: 108000, 
            price: 2500
        }), 
        new Service({
            name: "Women's Cut", 
            length: 324000, 
            price: 5000
        })
    ]);

    service_table = new ServiceTableView({
        collection: service_collection
    });

    App.main_region.show(service_table);

更新:这是两个模板:

ServiceItemView 模板:

<script type="text/html" id="service-item-template">
    <td><%= name %></td>
    <td><%= length %></td>
    <td><%= price %></td>
    <td class="actions">
        <input type="button" class="icon" value="Delete" />
    </td>
</script>

服务表视图模板:

<script type="text/html" id="service-table-template">
    <thead>
        <tr>
            <th>Name</td>
            <th>Time allotment</th>
            <th>Pricing</th>
            <th class="actions">Actions</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</script>

同样,渲染了 ServiceTableView 模板,但没有在下面渲染任何服务。

任何帮助表示赞赏。甚至指向在何处粘贴日志语句以获取更多信息的指针。

谢谢!

4

1 回答 1

0

原来Collections我创建的是这样写的:

Backbone.Model.extend而不是Backbone.Collection.extend. 在创建集合时,我必须从模型中复制代码以加快编写速度。

如果有人想使用上面的代码作为他们自己项目的示例,现在已修复并工作。

于 2012-10-19T16:32:38.910 回答