tldr:如何在Meteor JS应用程序的各个位置插入单个html模板,每个模板使用指定路径的唯一数据上下文(使用Iron Router)。
Template.images
:
<template name="images">
{{#each dataSource }}
<img id="{{ id }}" src="{{ src }}">
{{/each}}
</template>
dataSource
是数据的位置:helpers.js
此处假设:Template.images
应该是帮助者(数据)的来源,因为它们最终会在此处呈现模板。
Template.images.helpers({
funData: function () {
return [
{ id: 'fun' , src : 'fun/pink.png' },
{ id: 'fun' , src : 'fun/blue.png' }
]
},
painData: function () {
return [
{ id: 'pain' , src : 'pain/black.png' },
{ id: 'pain' , src : 'pain/gray.png' },
{ id: 'pain' , src : 'pain/moargrey.png' },
{ id: 'pain' , src : 'pain/white.png' }
]
},
loveData: function () {
return [
{ id: 'love' , src : 'love/orange.png' },
{ id: 'love' , src : 'love/yellow.png' },
{ id: 'love' , src : 'love/blue.png' }
]
}
});
我有很多这些fooData,barData等集合,它们通过Template.images
在dataSource
内作为arg(错误术语)插入。
某些路由多次产生Template.images
次,每次路由都有唯一的数据上下文。我将需要配置路由器/模板以访问任意多个特定dataSources
。 我可以这样做吗?
<template name="myTemplate1">
<h1>FUN</h1>
{{> images funData }}
</template>
<template name="myTemplate2">
<h1>PAIN and LOVE</h1>
{{> images painData loveData }}
</template>
然后在我的路由器(或控制器?)中,例如:
Router.map({
this.route('myTemplate1', {
data : function () { // 1. set data context
dataSource : funData // how to set this?!
}
})
this.route('myTemplate2', {
data : function () { // 2. fetching multiple helpers?
dataSource : [painData,loveData] // set to array ?!
}
})
})
摘要:如何使用Meteor JS将任意多个数据集发送到同一个模板,并在整个应用程序中以各种指定模板呈现它们。
答案 0 :(得分:0)
我会考虑做以下事情:
然后使用waitOn选项订阅包含您的路线的数据,并Returning Templates with Data
附注:请记住,您定义的辅助功能只能通过“图像”模板访问