主干.js视图中的渲染集合
Backbone.js render collection in View
我有一个主干集合,我正在尝试在视图中呈现。 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());
您最终会将数组传递给 template
函数,该函数通常需要一个上下文对象(名称/值对)。试试这个:
var html = this.template({collection: this.collection});
然后在模板中,您可以使用 collection.each
迭代器函数或任何用于迭代/过滤/映射/等的下划线实用程序方法循环访问它们。我还建议在授予模板对集合的访问权限时不要使用 toJSON,因为它会使您的数据更笨且更难使用。 toJSON
最好留到您发出 HTTP 请求时。
相关文章:
- 如何使用backbone.js从集合中获取模型名称
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- Meteor:插入集合后如何执行JS
- fabric js多边形集合坐标
- Backbone.js批量更新集合
- 根据屏幕大小显示主干.js集合的子集
- Meteor.js只更新一个参数,而不是整个集合
- 主干.js集合不迭代
- backbone.js可以't传递集合中的模型项's查看项目's视图
- 如何将会话数据从集合传递到视图?(Backbone JS/Coffeescapept)
- 将多级 mongodb 文档转换为 Backbone.js 模型/集合
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 主干.js将 url 参数传递给集合
- 流星.js按字段中的值筛选集合
- 骨干.js集合筛选前 10 个模型
- 骨干.js具有多种排序的集合
- 主干.js绑定到集合“添加”呈现视图两次
- 使用主干获取集合.js但未设置每个模型的 id
- 在节点中使用计数器集合.js递增 ID 字段
- 如何在主干中转换具有子集合的集合.js