我意识到之前已经提到过,Template.dynamic
如果其模板参数是帮助器,则// a global helper that composites the template's name using domain-specific and global parameters
Template.registerHelper('templateName', function (name) {
return name + Session.get('someVariable');
});
不会被设计为接受参数。
但这就是我想做的事情:
<!-- use case: a template calling two dynamic ones -->
<template name="someTemplate">
<div class="some-class">
{{> Template.dynamic template=templateName 'title' }}
</div>
<div class="another-class">
{{> Template.dynamic template=templateName 'content' }}
</div>
</template>
Template.registerHelper('templateName', function () {
var dt = this.dName || Template.parentData().dName;
return dName + Session.get('someVariable'));
});
这种模式极其干燥,它避免了必须设置嵌套条件并重写准相同的模板,每个模板都有很小的变化。
现在,我已经得到了这个:
<template name="someTemplate">
{{> segment dName="title"}}
{{> segment dName="content"}}
</template>
<template name="segment">
<div class="some-class">
{{> Template.dynamic template=templateName }}
</div>
</template>
Template.dynamic
它有效,但它并不理想,因为;
dName
,从而导致可伸缩性问题inherit
参数放在模板的数据上下文中与本地数据混合在一起,需要进行hacky检查是否可以在当前数据或父进程中访问< / LI>
是否有计划添加此功能?我是以错误的方式来做这件事的吗?还有其他人遇到过这些问题吗?
感谢阅读。
答案 0 :(得分:1)
使用{{with}}执行此操作有一个技巧。见这里:
https://forums.meteor.com/t/pass-argument-to-helper-in-template-dynamic-call/3971