我已阅读动态模板上的(有点稀疏)文档,但仍然无法根据特定字段在用户仪表板上显示动态内容。
我的Meteor.users集合包含一个状态字段,我想根据此状态返回不同的内容。
因此,例如,如果用户的状态为“当前”,则会看到“currentUser”模板。
我一直在使用动态模板助手(但也考虑过使用模板助手参数,这可能仍然是可行的方法),但它没有为具有不同状态的用户显示不同的模板。
{{> Template.dynamic template=userStatus}}
帮助程序返回一个字符串,以便根据需要与所需的模板对齐
userStatus: function () {
if (Meteor.users.find({_id:Meteor.userId(), status: 'active'})){
return 'isCurrent'
}
else if (Meteor.users.find({_id:Meteor.userId(), status: ‘isIdle'})) {
return 'isIdle'
} else {
return ‘genericContent'
}
}
可能有更好的方法来解决这个问题,但这似乎是一个非常常见的用例。
我见过的几个例子都使用了Sessions或click事件,但如果可能的话我宁愿使用游标。这是否意味着我所缺少的是重新计算以使其正确反应?或者其他一些我忽略的非常明显的东西。
答案 0 :(得分:0)
结束使用this approach discussed on the Meteor forums似乎更清洁。
{{> Template.dynamic template=getTemplateName}}
然后帮助者变成:
getTemplateName: function() {
return "statusTemplate" + Meteor.user().status;
},
这意味着您可以根据状态使用模板名称:
<template name="statusTemplateActive">
Content for active users
</template>
(但请记住,模板助手不喜欢连字符,需要正确设置数据上下文)