varias respuestas función funcion ejemplos condiciones con como buscarv buscar anidar anidado anidada templates backbone.js handlebars.js helpers

templates - respuestas - funcion si y excel



¿Es posible anidar ayudantes dentro del hash de opciones con manubrios? (2)

Su escenario no es compatible directamente, pero hay un par de soluciones alternativas que puede usar. Los helpers de los manubrios son solo código JavaScript, por lo que puede ejecutarlos desde el código de ayuda en sí:

function translateHelper() { //... } function viewHelper = function(viewName, options) { var hash = options.hash; if(hash.placeholder) { hash.placeholder = translateHelper(hash.placeholder); } }; Handlebars.registerHelper(''view'', viewHelper); Handlebars.registerHelper(''t'', translateHelper);

Y solo pasa la clave i18n como argumento:

{{view placeholder="search.root"}}

Esto es bueno, siempre y cuando su ayudante sepa qué argumentos deben ser localizados, y cuáles no. Si eso no es posible, puede intentar ejecutar todos los argumentos de ayuda a través de Manubrios, si contienen una expresión de manubrios:

function resolveNestedTemplates(hash) { _.each(hash, function(val, key) { if(_.isString(val) && val.indexOf(''{{'' >= 0)) { hash[key] = Handlebars.compile(val)(); } }); return hash; } function view(viewName, options) { var hash = resolveNestedTemplates(options.hash, this); }

Y usa la sintaxis de plantilla anidada que describes:

{{view placeholder="{{t ''search.root''}}" }}

Me doy cuenta de que ninguna de estas opciones es perfecta, pero son lo mejor que se me ocurre.

Por ejemplo, ¿hay alguna manera de anidar mi ayudante " i18n " dentro de la variable hash de otro ayudante?

{{view "SearchView" placeholder="{{t ''search.root''}}" ref="search" url="/pages/search" className=''home-search'' polyfill=true}}


Actualización: Handlebars ahora admite subexpressions , por lo que puede hacer:

{{view "SearchView" (t ''search.root'')}}