Mustache.js / Hogan.js с Backbone.js - PullRequest
4 голосов
/ 09 января 2012

Я пытаюсь реализовать некоторый код, используя backbone.js
и hogan.js (http://twitter.github.com/hogan.js/)

Hogan.js был разработан для тестирования усов,
так что все, что верно для шаблонов как
указанное здесь, также относится и к hogan.js.

Моя проблема заключается в передаче Backbone.Collection Хогану / Усу.

Для простого шаблона, подобного этому:

{{name}}

Хоган / Усы, ожидающие что-то вроде этого, прекрасно работают:

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

Однако мой Backbone.Collection:

а) * * тысяча двадцать-одна [{"name": "How Bizarre", "artist": "OMC"}]

или это:

б) [{"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()));

Спасибо.

Ответы [ 3 ]

1 голос
/ 31 июля 2012

Я столкнулся с тем же затруднительным положением, используя шаблоны Hogan для коллекции Backbone.

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

и в моем шаблоне я ссылаюсь на {{#data}} {{/ data}} для итерации по коллекции.

1 голос
/ 07 июля 2012

Похоже, вы передаете коллекцию Хогану, а не отдельной модели.

Попробуйте вместо этого:

_.each(myAlbum,function(album) {
    this.el.append(template.render(album.toJSON()));
});
0 голосов
/ 07 июня 2013

Я перебил вызов рендеринга магистрали

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

Очень хорошо работает с марионеткой. возникли проблемы с backbone.forms.

...