L.T*_*L.T 10 javascript meteor spacebars meteor-helper
在许多模板中,我想使用相同的功能,但必须在每个模板中定义它们.像这样:
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);
}
Run Code Online (Sandbox Code Playgroud)
HTML:
Run Code Online (Sandbox Code Playgroud)<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中:
Run Code Online (Sandbox Code Playgroud)<Template name ="a"> {{#each functionA ...}} {{/each }} </Template> <Template name ="b"> {{#each functionA ...}} {{/each }} </Template> <Template name="..."> {{ #.. functionA ...}} .... {{/...}} </Template >
我可以这样做吗?我希望我能清楚地描述这个问题.
Fge*_*Fge 14
您可以直接向操作员注册助手.这是我用来显示当前用户的电子邮件地址:
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;
});
Run Code Online (Sandbox Code Playgroud)
在我打电话的任何模板中{{currentUserName}}.对你来说就是这样
Handlebars.registerHelper('getNodeById', function (id) {
return collection.find({sid:id}).fetch();
});
Run Code Online (Sandbox Code Playgroud)
作为旁注:看看你想如何使用它,你可能已经认识到Meteor的错误.Meteor是数据驱动的 - 不要试图强制实施流驱动的范例.如果您缺少模板中的某些数据,则应更改数据源,而不仅仅是在模板中获取数据.
n4t*_*t4r 13
从Meteor 1.0开始,此处的文档指示开发人员使用Template.registerHelper它们来定义全局可用的模板助手.
所以在这个问题的情况下,正确的代码格式是这样的:
Template.registerHelper("getNodesById", function(id) {
return collection.find({sid: id});
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过以下两种方式在任何模板中引用此模板助手:
{{getNodesById '1'}}
Run Code Online (Sandbox Code Playgroud)
要么
{{#each getNodesById '1'}}
...
{{/each}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6572 次 |
| 最近记录: |