我正在尝试使用骨干.js实现一些代码
和hogan.js(http://twitter.github.com/hogan.js/)
Hogan.js是针对胡须测试套件开发的,
因此,所有适用于模板的内容
在此处指定的内容,hogan.js也是如此。
我的问题是将Backbone.Collection传递给Hogan / Mustache。
对于这样的简单模板:
{{name}}
Hogan / Mustache期望这样的效果很好:
{"name":"How Bizarre","artist":"OMC"}
但是我的Backbone.Collection是:
一个)
[{“名称”:“多么奇怪”,“艺术家”:“ OMC”}]
或这个:
b)
[{“名称”:“多么奇怪”,“艺术家”:“ OMC”},{“名称”:“性治疗”,“艺术家”:“马文·盖伊”}]
在演示页面http://mustache.github.com/#demo中,我无法
遍历a)或b)Backbone.Collection对象。
谁能指出我该怎么做?
var Song = Backbone.Model.extend({
defaults: {
name: "Not specified",
artist: "Not specified"
}
});
var Album = Backbone.Collection.extend({
model: Song
});
var song1 = new Song({ name: "How Bizarre", artist: "OMC" });
var song2 = new Song({ name: "Sexual Healing", artist: "Marvin Gaye" });
var myAlbum = new Album;
myAlbum.add(song1);
myAlbum.add(song2);
我通过尝试通过Backbone.Colleciton进行渲染
像这样的对象:myAlbum.toJSON()
var template = "{{name}}!";
var template = Hogan.compile(template);
this.el.html(template.render(myAlbum.toJSON()));
谢谢。
最佳答案
看起来您正在将收藏传递给Hogan,而不是单个模型。
尝试以下方法:
_.each(myAlbum,function(album) {
this.el.append(template.render(album.toJSON()));
});