【发布时间】:2012-01-09 17:25:24
【问题描述】:
我正在尝试使用backbone.js 实现一些代码
和 hogan.js (http://twitter.github.com/hogan.js/)
Hogan.js 是针对 mustache 测试套件开发的,
所以所有适用于模板的东西
此处指定,hogan.js 也是如此。
我的问题是将 Backbone.Collection 传递给 Hogan/Mustache。
对于像这样的简单模板:
{{name}}
Hogan/Mustache 期待这样的事情可以正常工作:
{"name":"How Bizarre","artist":"OMC"}
但是我的 Backbone.Collection 是:
a)
[{"name":"How Bizarre","artist":"OMC"}]
或者这个:
b) [{"name":"How Bizarre","artist":"OMC"}, {"name":"Sexual Healing","artist":"Marvin Gaye"}]
来自演示页面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()));
谢谢。
【问题讨论】:
-
我想我没问题。变种东西 = {}; stuff.items = myAlbum 这让我可以: {{#items}} {{name}} {{/items}} {"items":[ {"name":"How Bizarre" ,"artist":"OMC"}, {"name":"Sexual Healing","artist":"Marvin Gaye"} ]}
标签: backbone.js mustache