2012-01-09 49 views
4

我試圖使用Backbone.js的
和hogan.js實現一些代碼(http://twitter.github.com/hogan.js/)Mustache.js/Hogan.js與Backbone.js的

hogan.js兌鬍子測試套件開發,
所以一切對於模板也是如此,那麼具體
,也是hogan.js的情況。

我的問題是將Backbone.Collection傳遞給Hogan/Moustache。

對於一個簡單的模板是這樣的:

{{name}} 

霍根/鬍子期待這樣的事情能正常工作:

{"name":"How Bizarre","artist":"OMC"} 

但是我Backbone.Collection是:

一)
[{「name」:「多麼奇怪」,「藝術家」:「OMC」}]

or this:

b) [{「name」:「多麼奇怪」,「藝術家」:「OMC」},{「名字」:「性療愈」,「藝術家」:「馬文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())); 

謝謝。

+1

我想我知道了。 var stuff = {}; 東西。項目通過MyAlbum = 這就讓我: {{#items}} {{名}} {{/項目}} { 「項目」:[{ 「名」:「如何奇怪「,」藝術家「:」OMC「}, {」name「:」性療愈「,」藝術家「:」Marvin Gaye「} ]} – 2012-01-09 17:41:38

回答

1

看起來像是你將一個Collection傳遞給Hogan而不是一個單獨的模型。

試試這個:

_.each(myAlbum,function(album) { 
    this.el.append(template.render(album.toJSON())); 
}); 
1

我遇到了同樣的困境,使用中的骨幹收集霍根模板。

var o = {}, 
c = Album.toJSON(); 
o.data = c; 
this.$el.html(template.render(o)); 

在我的模板中,我引用{{#data}} {{/ data}}來遍歷集合。

0

我推翻骨幹渲染調用

Backbone.Marionette.Renderer.render = (template, data) -> 
    HoganTemplates[template].render data 

作品非常好,提線木偶。雖然有與backbone.forms問題。