Javascript 视图中的Backbone.js渲染集合

Javascript 视图中的Backbone.js渲染集合,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我试图在视图中呈现一个主干集合。JSON数据似乎是正确的,但是我无法从视图中访问这些值 以下是基本收藏: define(['backbone', 'BaseModel'], function(Backbone, BaseModel) { var BaseCollection = Backbone.Collection.extend({ model: BaseModel, url: "/collection/get?json=true",

我试图在视图中呈现一个主干集合。JSON数据似乎是正确的,但是我无法从视图中访问这些值

以下是基本收藏:

define(['backbone', 'BaseModel'], function(Backbone, BaseModel) {

    var BaseCollection = Backbone.Collection.extend({

         model: BaseModel,
         url: "/collection/get?json=true",

         initialize: function() {}
    });

    return BaseCollection;

});
以下是观点:

define(['backbone', 'BaseCollection'], function(Backbone, BaseCollection) {

    var BaseView = Backbone.View.extend({

        el: $('#baseContainer'),
        template: _.template($('#baseTemplate').html()),

        initialize: function() {
            _.bindAll(this);
            this.collection = new BaseCollection();
            this.collection.bind('all', this.render, this);
            this.collection.fetch();
        },
        render: function() {   

            //This returns 3 objects which is correct based on the JSON data being returned from the server
            console.log(this.collection.toJSON());

            var html = this.template(this.collection.toJSON());
            this.$el.html(html);
            return this;
        },

    });

    return BaseView;

});
我想我需要对集合中的每个模型迭代
this.render
。但是,我不确定,因为它在完成所有迭代之前不应该“渲染”


任何建议都很好!谢谢大家!

您需要通过名称为模板提供对模型的访问权限。执行此操作时:

var html = this.template(this.collection.toJSON());
最后将数组传递给
模板
函数,该函数通常需要一个上下文对象(名称/值对)。试试这个:

var html = this.template({collection: this.collection});

然后在模板中,您可以使用
集合对其进行迭代。每个
迭代器函数或任何用于迭代/过滤/map/等的下划线实用程序方法。我还建议在授予模板对集合的访问权限时不要使用toJSON,因为这会使您的数据更简单,更难处理
toJSON
最好留到您发出HTTP请求时使用。

您需要通过名称为模板提供对模型的访问权限。执行此操作时:

var html = this.template(this.collection.toJSON());
最后将数组传递给
模板
函数,该函数通常需要一个上下文对象(名称/值对)。试试这个:

var html = this.template({collection: this.collection});

然后在模板中,您可以使用
集合对其进行迭代。每个
迭代器函数或任何用于迭代/过滤/map/等的下划线实用程序方法。我还建议在授予模板对集合的访问权限时不要使用toJSON,因为这会使您的数据更简单,更难处理
toJSON
最好留给您进行HTTP请求时使用。

您能给我们展示一下您的模板吗?我猜您需要修改传递给
this.template()
的参数,或者修改模板本身。您可以使用集合。模板中的每个
都可以在集合中的所有模型中循环(但是,如果要绑定许多特定于模型的事件,建议为每个模型创建子视图)。您可以向我们展示您的模板吗?我猜您需要修改传递给
this.template()
的参数,或者修改模板本身。您可以使用集合。模板中的每个
循环集合中的所有模型(但是,如果要绑定大量特定于模型的事件,建议为每个模型创建子视图)