流星:使用不同数据重用模板
Meteor: Re-use template with different data
我有一些模板,列出项目(日志行,用户),并相应地在表中设置样式。现在我添加了一个"搜索"页面,它搜索不同项目类型中的字符串并将它们显示在一个页面上。在布局方面,我想重用原始模板,但显然要使用搜索返回的数据。
我怎么能做到这一点,而不复制模板本身在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的了解是多么的少。
只需将要使用的模板放入{{#each}}
语句中。然后数组中的每一项都将成为该内部模板的上下文。
HTML文件
<template name="users">
<ul>
{{#each UserArr}}
{{> userItem}}
{{/each}}
</ul>
</template>
<template name="userItem">
<li><a href="/edituser/{{_id}}">{{username}}</a> {{profile.name}}</li>
</template>
JS文件
Template.users.UserArr = function()
{
return Meteor.users.find({});
};
另一个解决方案是将请求放在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将呈现,因为它是响应会话的内容。
相关文章:
- 流星.js如何更新模板数据
- 访问流星模板中的父数据上下文
- 流星:显示数组数据,因为表在添加新列时给出了重复值
- 数据don't登录流星后加载
- 流星 - 页面刷新导致在为路由器获取数据时闪烁
- 流星.js - 是否应该对数据进行非规范化
- 流星:动画(淡入/淡出)动态模板数据
- 流星 - 将数据从一个集合移动到另一个集合
- 从流星中的JSONP中提取数据
- 为什么将数据加载到流星集合中需要这么长时间
- 使用流星自动表单预览数据
- 流星订阅数据未显示在 Chrome 控制台中
- 流星数据上下文,将数组传递到每个空格键循环中
- 获取客户端流星上的多个用户数据
- 流星:使用不同的参数多次调用外部 API 并发布数据
- 如何在流星模板助手之间传递数据
- 流星发布 - 如何使用配置文件信息发布数据和检查
- 如何在流星应用程序上广播数据
- 将字段与 id 匹配并插入数据 - 流星
- JSON对象.无法检索模板中的数据.流星