template guide javascript meteor spacebars

javascript - guide - ¿Cómo acceder a las variables globales en la plantilla Meteor sin usar un helper?



meteor template (5)

Sé que esto no es exactamente lo que estaba pidiendo la operación, pero esta página apareció en Google cuando se buscaba "Cómo acceder a la configuración de Meteor desde la plantilla".

Expandí la soultion de @Tomas Hromnik e hice esta ayudante de plantilla global:

helpers.js

Template.registerHelper(''meteorSettings'', function(settings) { var setting = Meteor.settings.public; if (settings) { var eachSetting = settings.split(''.''); for (i = 0; i < eachSetting.length; i++) { setting = setting[eachSetting[i]]; } } return setting; });

home.html

<template name="home"> <!-- Basically the same as doing this: (except you can''t do this) {{#if Meteor.settings.public.instagram.access_token}} --> {{#if (meteorSettings ''instagram.access_token'')}} <div class="instagram"></div> {{/if}} <!-- You can also set Meteor.settings.public to a variable to access multiple settings --> {{#let settings=meteorSettings}} {{settings.instagram.access_token}} {{/let}} </template>

Tengo todos mis archivos de imágenes servidos desde un dominio diferente, y puse ese nombre de host como una variable en Meteor.settings. Entonces, ¿cómo puedo acceder a esta variable dentro de una plantilla de Meteor?

Por ejemplo, en esta plantilla, ¿cuál es la mejor práctica para reemplazar img.example.com con una variable definida en Meteor.settings u otras variables globales? No creo que sea una buena idea pasarlo a cada plantilla mediante el uso de ayudantes.

<template name="products"> {{#each items}} <img src="http://img.example.com/{{id}}.png"> {{/each}} </template>


Template.registerHelper(''var'', name => { const data = Template.instance().data || {}; return data[name]; });

Plantilla interior:

{{var ''someVariableFromTemplate''}}


Asignar una función global con tipo de retorno

if(Meteor.isClient){ getItems = function(){ //do your stuffs return items; }

Su plantilla

<template name="products"> {{#each items}} <img src="http://{{imgExampleUrl}}/{{id}}.png"> {{/each}} </template>

Ayudantes

Template.products.helpers({ items : function(){ return getItems(); } });

Puede usar getItems() desde cualquier lugar


En su archivo Js haga esto. Puede ayudarte

Template.yourTemplateName.varNameYouhavetoaccess= function(){ return getYourGlobalValueHere; }

Y en la página HTML en su plantilla, puede iterar el valor {{varNameYouhavetoaccess}}

O puede usar Helper

En archivo JS:

Template.nametag.helpers ({name: "Ben Bitdiddle"});

En HTML:

<template name="nametag"> <p>My name is {{name}}.</p> </template>


La única forma de cómo puede pasar datos a sus plantillas es a través de ayudantes. Puedes usar global helper :

Template.registerHelper(''imgExampleUrl'', function() { return ''img.example.com''; });

Entonces puedes usar ayuda global en muchas plantillas:

<template name="products"> {{#each items}} <img src="http://{{imgExampleUrl}}/{{id}}.png"> {{/each}} </template> <template name="otherTemplate"> <img src="http://{{imgExampleUrl}}/{{id}}.png"> </template>

O si desea obtener el valor de imgExampleUrl desde settings.json

Template.registerHelper(''imgExampleUrl'', function() { return Meteor.settings.public.imgExampleUrl; });

Su configuración.json:

{ "public": { "imgExampleUrl": "img.example.com" } }