Javascript 在meteor.js中对不同的数据使用相同的模板

Javascript 在meteor.js中对不同的数据使用相同的模板,javascript,templates,meteor,Javascript,Templates,Meteor,我的meteor应用程序中有一个显示地图的模板。此模板用于两件事: 在地图上显示我的应用程序的搜索结果 一旦用户选择了某个场馆,则显示该场馆的各个位置 目前我的代码如下(我没有关于此模板的其他函数或帮助程序): Template.map.rendered=function(){ 如果(!map) var map=新课程地图(“#地图”); 副自动运行(函数(){ if(Session.get(“当前位置”)){ var places=places.find(Session.get(“当前位置

我的meteor应用程序中有一个显示地图的模板。此模板用于两件事:

  • 在地图上显示我的应用程序的搜索结果
  • 一旦用户选择了某个场馆,则显示该场馆的各个位置
目前我的代码如下(我没有关于此模板的其他函数或帮助程序):

Template.map.rendered=function(){
如果(!map)
var map=新课程地图(“#地图”);
副自动运行(函数(){
if(Session.get(“当前位置”)){
var places=places.find(Session.get(“当前位置”)).fetch();
}
否则{
var places_cursor=get_searched_places();
如果(放置光标){
var places=places_游标[0]。fetch();
变量places\u id=.pull(places,“\u id”);
//删除不再在places\u id数组中的标记
地图。移除标记(位置标识);
}
}
若有(地方){
//在位置中添加所有标记
对于(变量i=0,places\u length=places.length;i
我的地图模板:

<template name="map">
<div id="map" class='google-map'>
</div>

根据用户是否使用Session.get(“当前位置”)选择了一个位置,我会在我的位置变量中加载不同的信息


我真的不喜欢那个设计,我想我可以找到一个更好的方法来做我想做的事情。您有什么建议吗?

您面临的问题之一似乎是如何将Meteor与外部地图API集成。虽然迫切需要这样做,但Meteor实际上提供了一种更简单的方法来使用该函数,其中添加的
调用、更改的
调用和删除的
调用可以直接连接到maps API

实际上,我已经用Meteor和OpenLayers实现了一个映射应用程序,它正是这样做的。向下滚动至最末端:


@我觉得你的解决方案很好。我唯一不喜欢的是
map
变量的定义。我想您需要使用
this.map
(甚至
this.\u map
,请参见),因为您肯定希望将此对象附加到模板instacne,而不是本地范围。我说得对吗?@Tomasz:谢谢你的评论。我编辑了我的帖子,以显示我的模板,并明确表示呈现的代码是该模板的唯一代码。不,我不使用这个。映射我创建这样的映射是因为我需要一个映射,否则你会怎么做?根据你说的,我假设你需要从代码中的其他地方访问这个
map
对象,所以它可能是全局定义的,对吗?那么为什么要使用
var
前缀呢?请注意,前缀为
var
的变量将仅在本地定义,因此全局
map
保持不变,并且如果(!map)
始终满足条件
。事实上,您正在为每个
渲染
事件创建一个
课程地图
的新实例,但我假设这不是您想要的。
<template name="map">
<div id="map" class='google-map'>
</div>