我正在尝试使用骨干.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()));
});

07-25 20:37