在marionette.itemview上传递集合是行不通的

时间:2013-07-16 12:56:19

标签: backbone.js marionette

我正在开发一个backbone.marionette演示,用于在项目视图上实现集合。 但它没有正确渲染。我创建了一个demo,在我将集合传递给它之后,视图没有渲染。

 var view2 = new MyItemsView({
        collection: options.collection
    });
app.mainRegion.show(view2); 

这是jsfiddle:http://jsfiddle.net/kslagdive/t9WWC/ 我怎么能这样做..?

2 个答案:

答案 0 :(得分:1)

以下是您要执行的操作的示例:http://jsfiddle.net/dfYm2/

即:

var MyItemView = Marionette.ItemView.extend({
    template: '#some-template',
    tagName: "li"
});

var MyItemsView = Marionette.CollectionView.extend({
    itemView: MyItemView,
    tagName: "ul"
});

然后

    var view2 = new MyItemsView({
        collection: options.collection
    });
    app.mainRegion.show(view2);

让Marionette迭代集合,为您渲染视图。这是它的作用。否则,没有什么动力去使用Marionette而不是简单的Backbone。

还有一个更全面的逐步介绍,在这个免费的pdf中显示Marionette的收藏:http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf

答案 1 :(得分:0)

改为使用CompositeView或CollectionView。

var template = _.template($('#some-template').html());
var MyItemView = Marionette.ItemView.extend({
    tagName: 'li',
    template: template
});

var MyItemsView = Marionette.CollectionView.extend({
    tagName: 'ul',
    itemView: MyItemView
});

模板:

<script id="some-template" type="text/html">
    <%- title %>
</script>