¿Pueden las plantillas de Meteor acceder a las variables de sesión directamente?
handlebars.js (6)
En mi aplicación Meteor me encuentro escribiendo muchas cosas como:
Templates.myTemplate1.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
Templates.myTemplate2.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
Necesito muchas plantillas diferentes (estoy usando manubrios) para acceder al mismo valor simple almacenado dentro de la sesión.
¿Hay alguna manera de evitar escribir la misma función una y otra vez? Gracias
Basándose en la respuesta de , ya que puede pasar parámetros a los ayudantes de Handlebars, puede hacer que sea una función genérica para que pueda recuperar fácilmente cualquier valor de forma dinámica, por ejemplo
Template.registerHelper(''session'',function(input){
return Session.get(input);
});
A continuación, puede llamarlo en su plantilla como este
{{session "isCurrentUser"}}
Tenga en cuenta que los paquetes de autenticación vienen con un ayudante global llamado CurrentUser que puede usar para detectar si el usuario está conectado:
{{#if currentUser}}
...
{{/if}}
Como meteorito actualmente usa manubrios como motor de plantillas predeterminado, puedes definir un helper para eso:
if (Meteor.isClient) {
Template.registerHelper(''isCurrentUser'',function(input){
return Session.get("isCurrentUser");
});
}
Puedes hacer esto en un archivo nuevo, por ejemplo llamado helpers.js, para mantener el archivo app.js más limpio. Una vez que esta ayudante está registrada, puede usarla en cualquier plantilla insertando {{isCurrentUser}}
En realidad, ahora puedes usar {{#if currentUser}}
Es un paquete global incluido en el paquete accounts / auth ..
Puede agregar isCurrentUserTemplate
e incluir esto en sus otras plantillas con
{{> isCurrentUserTemplate}}
Querrá consultar estos ayudantes de manubrio para meteoro: https://github.com/raix/Meteor-handlebar-helpers
Hay varios ayudantes de sesión, uno que hace lo que quieres. De los documentos:
Is my session equal to 4?: {{$.Session.equals ''mySession'' 4}}
Solo un aviso para todos: con el lanzamiento de 0.8.0, Handlebars.registerHelper
ha quedado obsoleto. Usando el nuevo motor Blaze, UI.registerHelper
sería el nuevo método para lograr esto.
Versión actualizada del código de @cioddi
UI.registerHelper(''isCurrentUser'',function(input){
return Session.get("isCurrentUser");
});