¿Pueden las plantillas secundarias de Meteor acceder a los ayudantes de plantillas principales?
handlebars.js (2)
También puede registrar un ayudante común:
Template.registerHelper(''isTrue'', function(boolean) {
return boolean == "true";
});
Y llámalo así en tu html:
<input type="checkbox" checked="{{isTrue attr}}"/>
Digamos que tenemos una plantilla principal y una plantilla secundaria:
<template name="parent">
{{> child }}
</template>
<template name="child">
{{#if show}}
//Do something
{{/if}}
</template>
Si asignamos ''mostrar'' a la plantilla padre:
if (Meteor.isClient){
Template.parent.show = function(){
return Session.get(''isShowing'');
}
}
¿Hay alguna forma para que la plantilla hijo tenga acceso a ella?
Editar
Podría hacer un ayudante de manillar universal para poder usar los valores de Sesiones en cualquier lugar de su html:
Cliente js
Handlebars.registerHelper(''session'', function(key) {
return Session.get(key);
});
Cliente HTML
<template name="child">
{{#if session "show"}}
//Do something
{{/if}}
</template>
De manera similar, también puede usar {{session "show"}}
/ {{#if session "show"}}
en su plantilla principal y no tener que usar más el helper Template.parent.show
.
Respecto al uso de la notación ../
. Existen ciertos escenarios en los que puede no funcionar: https://github.com/meteor/meteor/issues/563 . Básicamente funciona dentro de {{#bloqueadores auxiliares}} pero no con plantillas, pero funcionaría en un ayudante de bloque si contiene un subtemplate.
<template name="child">
{{#if ../show}}
Do something
{{/if}}
</template>