任何想法如何允许我的BioPic Handlebars助手(我正在使用Meteor)为param'所有者'允许不同的上下文。我将showBioPic称为另一个模板的部分,即
<template name="myMain">
{{#each post}}
{{> showBioPic}}
{{/each}}
Do a bunch of other stuff here too.
</template>
我希望能够传入不同的“所有者”值,具体取决于调用模板,即Meteor.userId,post.owner,anotherUsersId。即如果我使用{{#each user}}这没有所有者字段,它有一个userId,所以BioPic助手不起作用。
<template name="showBioPic">
{{#with BioPic owner}}
<img src="{{cfsFileUrl 'size48x48gm'}}" alt="Profile Picture: {{_id}}">
{{else}}
<img class="showShared" src="images/default-biopic-48x48.png" alt="Default Profile Picture">
{{/with}}
</template>
Template.showBioPic.BioPic = function (IN_ownerId)
return BioPicsFS.findOne( { owner: IN_ownerId });
};
答案 0 :(得分:1)
如果使用模板助手是一个选项,那么这样的事情应该有效:
Template.myMain.helpers({
showBioPicWithContext: function (owner) {
return Template.showBioPic(owner);
}
});
<template name="myMain">
{{#each post}}
{{showBioPicWithContext id}}
{{/each}}
Do a bunch of other stuff here too.
</template>
<template name="showBioPic">
{{#if _id}}
<img src="{{cfsFileUrl 'size48x48gm'}}" alt="Profile Picture: {{_id}}">
{{else}}
<img class="showShared" src="images/default-biopic-48x48.png" alt="Default Profile Picture">
{{/if}}
</template>
答案 1 :(得分:0)
我不确定我是否了解您的问题的详细信息,但在我的一个项目中,我做了类似的事情:
Handlebars.registerHelper('BioPic', function(user) {
if (_.isString(user)) {
// assume user is an id
} else {
// assume user is an object like Meteor.user()
}
});
Handlebars helpers只是函数,因此您可以测试传递给它们的参数的值并相应地执行操作。在上面的示例中,当user
是一个字符串时,我们可以假设它是一个id并返回类似Pictures.findOne({owner: user});
的内容。您可以根据user
输入的所有可能变体添加更多子句。