Как получить доступ к свойствам Backbone Model в шаблоне Handlebar
Если есть модель Backbone с именем Person
, которая имеет свойства firstName
, lastName
. Обычно доступ к нему похож на person.get('firstName')
и person.get('lastName')
.
Как сделать аналогичную вещь в шаблоне Handlebar, где Person
был подвергнут контексту.
Ответы
Ответ 1
Когда вы создаете шаблон Handlebars, вам необходимо передать атрибуты модели. Рекомендуемый способ сделать это - вызвать Model.toJSON
, который возвращает копию внутреннего хэша attributes
модели.
var template = Handlebars.compile(templateHtml);
var rendered = template({ person: model.toJSON() });
В шаблоне вы можете получить доступ к контексту по имени свойства.
<span>{{person.firstName}} {{person.lastName}}</span>
Ответ 2
На самом деле у меня так много мест с .toJSON, поэтому я разработал модификацию Handlebars для обработки моделей Backbone:
https://gist.github.com/4710958
Он проверит, является ли значение экземпляром Backbone.Model, и если он будет вызывать метод .get().
Backbone.Model должен быть глобальным, чтобы использовать его.
{{ user.address.street }}
Будет проанализирован как:
user.get("adress").street