我从不同的域提供了所有图像文件,并将该主机名作为变量放入Meteor.settings中。那么,如何在Meteor模板中访问此变量?
例如,在此模板中,使用Meteor.settings或其他全局变量中定义的变量替换img.example.com
的最佳做法是什么?我不认为通过使用助手将其传递给每个模板是个好主意。
<template name="products">
{{#each items}}
<img src="http://img.example.com/{{id}}.png">
{{/each}}
</template>
答案 0 :(得分:10)
如何将数据传递到模板中的唯一方法是通过帮助程序。您可以使用global helper:
Template.registerHelper('imgExampleUrl', function() {
return 'img.example.com';
});
然后,您可以在许多模板中使用全局帮助程序:
<template name="products">
{{#each items}}
<img src="http://{{imgExampleUrl}}/{{id}}.png">
{{/each}}
</template>
<template name="otherTemplate">
<img src="http://{{imgExampleUrl}}/{{id}}.png">
</template>
或者,如果您想从settings.json
获取imgExampleUrl的值Template.registerHelper('imgExampleUrl', function() {
return Meteor.settings.public.imgExampleUrl;
});
你的settings.json:
{
"public": {
"imgExampleUrl": "img.example.com"
}
}
答案 1 :(得分:0)
在你的Js文件中这样做。它可能会帮助你
Template.yourTemplateName.varNameYouhavetoaccess= function(){
return getYourGlobalValueHere;
}
在模板的HTML页面中,您可以迭代值{{varNameYouhavetoaccess}}
或者你可以使用助手
在JS文件中:
Template.nametag.helpers({ 名字:&#34; Ben Bitdiddle&#34; });
在HTML中:
<template name="nametag">
<p>My name is {{name}}.</p>
</template>
答案 2 :(得分:0)
分配具有返回类型
的全局函数if(Meteor.isClient){
getItems = function(){
//do your stuffs
return items;
}
您的模板
<template name="products">
{{#each items}}
<img src="http://{{imgExampleUrl}}/{{id}}.png">
{{/each}}
</template>
助手
Template.products.helpers({
items : function(){
return getItems();
}
});
您可以随时随地使用getItems()
答案 3 :(得分:0)
我知道这并非正是op所要求的,但在搜索&#34;如何从模板&#34;中访问Meteor设置时,Google上出现了此页面。
我扩展了@Tomas Hromnik的灵魂并成为了这个全局模板助手:
<强> 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>
答案 4 :(得分:0)
Template.registerHelper('var', name => {
const data = Template.instance().data || {};
return data[name];
});
内部模板:
{{var 'someVariableFromTemplate'}}