gpt4 book ai didi

javascript - 如何定义全局模板辅助函数?

转载 作者:可可西里 更新时间:2023-11-01 02:29:45 28 4
gpt4 key购买 nike

在许多模板中我想使用相同的函数,但它们必须在每个模板中定义。像这样:

function getNodesById(id){
return collection.find({sid:id}).fetch();
}

Template.navigation.getNodesById= function(id){
return getNodesById(id);
}

Template.body.getNodesById= function(id){
return getNodesById(id);
}

HTML:

<Template name="navigation">
...
{{#each getNodesById '1'}}
...
{{/each}}
...
</Template>
<Template name="body">
...
{{#each getNodesById '1'}}
...
{{/each}}
...
</Template>
...
<Template name="...">
.....
</Template>

有什么方法可以定义全局模板函数而不是模板?就像它:在 JavaScript 中:

    defined global tempele.functionA = function(...){         return ...    }

在 html 中:

<Template name ="a">
{{#each functionA ...}}
{{/each }}
</Template>

<Template name ="b">
{{#each functionA ...}}
{{/each }}
</Template>
<Template name="...">
{{ #.. functionA ...}}
....
{{/...}}
</Template >

我可以这样做吗?我希望我把问题描述清楚了。

最佳答案

您可以直接使用 handlebars 注册您的助手。这是我用来显示当前用户的电子邮件地址的内容:

Handlebars.registerHelper('currentUserName', function () {
var user = Meteor.user();
if (_.isUndefined(user) || _.isNull(user)) {
return new Handlebars.SafeString("<i class='icon-spin icon-spinner'></i> Login");
}
return user.emails[0].address;
});

在任何模板中,我只需调用 {{currentUserName}}。对你来说就是

Handlebars.registerHelper('getNodeById', function (id) {
return collection.find({sid:id}).fetch();
});

附带说明:看看您想要如何使用它,您可能会误解 Meteor。 Meteor 是数据驱动的——不要试图强制执行流驱动的范例。如果您的模板中缺少某些数据,您应该更改数据源,而不仅仅是在模板中获取它。

关于javascript - 如何定义全局模板辅助函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com