Я использую Handlebars с Backbone и Marionette. Я собираю шаблоны Handlebars и сохраняю их в объекте, на который можно ссылаться определениями. Я использую LayoutView и регионы для отображения различных элементов, которые мне нужны в пользовательском интерфейсе.Передача переменных в шаблон Handlebars при рендеринге Marionette/Backbone View
Что я хочу сделать, это передать (логические) переменные в представление так, чтобы Handlebars принимало решения (через вспомогательный блок {{#if varName}}
) о том, что делать. Для ясности я не хочу упорствовать в этих данных, поэтому я бы действительно не сделал их частью модели, которую я передаю, чтобы ее можно было визуализировать.
Так что я делаю определение Backbone.Model и Marionette.ItemView как обычно, и пытаюсь передать в дополнительном переменных через Initialize:
var newUser = new app.UserView({
model: new app.UserModel(),
initialize: function(){
this.isNewDoc = true
}
});
// display the view in a region using app.regions.maun.show(newUser);
// ...etc.
То, что я хочу, чтобы иметь возможность пройти и могут ссылаться на переменные, такие как isNewDoc
в шаблоне Handlebars, в идеале через {{#if isNewDoc}}...{{/if}}
.
Я пробовал различные перестановки для строки this.isNewDoc = true
, такой как isNewDoc: true
, но я никуда не денусь. Что я делаю не так?
serializeData - метод, специфичный для [Marionette.ItemView] (http://marionettejs.com/docs/v2.4.1/marionette.itemview.html#itemview-serializedata), поэтому он определенно будет работать. templateHelpers может быть лучшим решением для того, что вы делаете, хотя и не тем, что я использовал, поэтому благодарим вас за это. –