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"
}
}