我正在尝试根据文档中字段的值渲染模板。
我尝试在帮助程序中使用switch case但返回值不正确。
<template name="unitsList">
{{#each units}}
{{> unitItem}}
{{/each}}
</template>
Template.unitsList.helpers({
units: function() {
return Units.find({}, {sort: {name: 1}});
}
});
<template name="unitItem">
<a href="{{unitType}}">{{name}}</a>
</template>
Template.unitItem.helpers({
unitType: function() {
var unitType = this.unitType;
switch(unitType){
case 'first': return "{{pathFor 'unitPageFirst'}}";
case 'second': return "{{pathFor 'unitPageSecond'}}";
}
}
});
我要么采取错误的方式,要么缺少基本的东西......
我已经删除了很多代码来专注于这个问题。
有关如何使其发挥作用的任何想法,或有关如何更好地做到这一点的任何建议?
答案 0 :(得分:1)
您无法在执行时从JS返回未编译的Spacebars字符串。
您可以使用Router.path
在模板帮助程序中获取路径的路径:
Template.unitItem.helpers({
unitType: function() {
var unitType = this.unitType;
switch(unitType){
case 'first':
return Router.path('unitPageFirst', this);
case 'second':
return Router.path('unitPageSecond', this);
}
}
});
或者您可以通过声明模板助手来检查unitType
来使用普通空格键。
HTML
<template name="unitItem">
{{#if unitTypeIs 'unitTypeFirst'}}
<a href="{{pathor 'unitTypeFirst'}}">{{name}}</a>
{{/if}}
{{#if unitTypeIs 'unitTypeSecond'}}
<a href="{{pathor 'unitTypeSecond'}}">{{name}}</a>
{{/if}}
</template>
JS
Template.unitItem.helpers({
unitTypeIs: function(unitType){
return this.unitType == unitType;
}
});
答案 1 :(得分:0)
查看Iron-router指南中的渲染模板,特别是 this.render('xyz'); 声明
https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#rendering-templates