我有一些列出项目(日志行,用户)的模板,并在表格中相应地设置它们。现在我添加了一个“搜索”页面,它搜索不同项目类型的字符串并在一个页面上显示它们。在布局方面,我想重用原始模板,但显然需要搜索返回的数据。
如果不在HTML文件中复制模板本身,我该怎么做?
换句话说:如何使用子模板中顶级模板的实际数据。
小例子:
<template name="user_list">
{{#each user_list}}
</template>
<template name="users">
{{> user_list}}
</template>
<template name="search">
{{> user_list}}
{{> group_list}}
</template>
在.coffee:
Template.users.user_list = ->
[a,b,c,d]
Template.search.user_list = ->
[b,c]
也许这很简单,这表明我对Meteor的了解有多少。
答案 0 :(得分:0)
只需将您要使用的模板放在{{#each}}
语句中即可。然后,数组中的每个项都将成为该内部模板的上下文。
<template name="users">
<ul>
{{#each UserArr}}
{{> userItem}}
{{/each}}
</ul>
</template>
<template name="userItem">
<li><a href="/edituser/{{_id}}">{{username}}</a> {{profile.name}}</li>
</template>
Template.users.UserArr = function()
{
return Meteor.users.find({});
};
答案 1 :(得分:-1)
另一个解决方案是将您的请求放在Session属性中,并在查询用户时检查它是否存在。默认情况下,Session.get("userQuery")
会返回undefined
,但是一旦您在搜索字段中输入内容,就会使用Session.set("userQuery", {type: "something"})
现在在coffeescript中你可以说:
Template.users.user_list = ->
if(Session.get("userQuery"))
[a,b,c,d]
else
[b,c]
或者使用MiniMongo查询,因为它更好: - )
好的一点是,你的HTML会重新呈现,因为它会对Session的内容产生反应。