流星模板中包含的谷歌地图被渲染两次

2024-01-26

我有以下模板:

<template name="test">
  {{#isolate}}
    <div id="map_canvas" style="width:50%; height:50%"></div>
  {{/isolate}}
</template>

在我的 test.js 中(来自https://developers.google.com/maps/documentation/javascript/tutorial#HelloWorld https://developers.google.com/maps/documentation/javascript/tutorial#HelloWorld) :

function initialize(){
  var mapOptions = {
    center: new google.maps.LatLng(-34.397, 150.644),
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map($("#map_canvas")[0], mapOptions);
}

Template.test.rendered = function(){
    initialize();
  //*** The following is the workaround I am using:***
  // if (! this.initialized){
  //   initialize();
  //   this.initialized = true;
  // }
};

问题是:如果没有注释代码部分中显示的解决方法,模板总是会呈现两次(当运行initialize()时)。它既显示在控制台日志中(此处未显示日志记录代码),也从地图闪烁一次可见(这是不可接受的)。

我猜测,原因是发生了以下事件:

  1. 模板被渲染,带有$('#map_canvas')生成为一个简单的 div 元素(不附加地图);
  2. 谷歌地图API返回异步并修改$('#map_canvas');
  3. 不知怎的,Meteor 检测到了这种变化,尽管{{#isolate}},决定再次渲染整个模板(这在日志中显示);
  4. 再次调用initialize()Template.test.rendered.

我的问题:

  1. why?
  2. 如果发生了这种情况,为什么 Meteor 只渲染两次,而不是无限次?
  3. 解决方案?

3个问题,非常感谢!


由于外部上下文包含,模板可能被渲染两次{{> test}}正在重新渲染。发生这种情况的原因有多种,但通常只是它最初在没有订阅数据的情况下呈现,然后在数据加载后再次呈现。

不管怎样,在你的具体情况下,我认为你想要的是{{#constant}}围绕你的谷歌地图的包装,而不是{{#isolate}}.

NOTE: {{#constant}} areas do如果(无论出于何种原因)周围的上下文被重新渲染,则重新渲染。然而,新版本在 DOM 中被丢弃而不是被替换。所以你要小心rendered回调只做某事第一次.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流星模板中包含的谷歌地图被渲染两次 的相关文章

  • 如何设置透明叠加 WMS 图层的样式

    我成功了覆盖WMS层 http blog sumbera com 2010 11 02 tiled wms overlay on google map v3 然而 在谷歌地图v3中 由于图块上的信息是透明的黑色 因此在深色背景 如卫星地图
  • Google 地图 - 使用自定义 json 样式*和* 地形视图

    因此 我创建了一些自定义 JSON 以使海洋更加饱和的蓝色 但现在似乎无法将地图默认为地形视图 它只是转到标准路线图视图 似乎无法弄清楚为什么会这样正在发生 有什么想法吗 function initialize Create an arra
  • 带有航点的 Google 路线服务无法正常工作

    这是我的代码 用于显示带有谷歌方向的航路点 Show Route if e keyCode 109 booking docket dialog isOpen var pickup txt pickup lat long val var pi
  • 使用 AngularJS 动态加载 Google 地图 API

    我正在尝试使用 AngularJS 加载 Google Maps API 以及该部分的控制器 search controller GoogleMaps scope sce function GoogleMaps scope sce var
  • Google API 和 OAuth 2.0 的正确重定向 URI

    我正在使用 Google Maps API 制作一个应用程序 我希望能够让一个人在一台计算机上观看另一个人在地图上编辑的内容 我正在考虑将地图信息传递到 Google Fusion Table 另一个人将能够将所有内容视为一层 我希望该程序
  • Google Map API v3 无法在 IE9 中加载

    我尽可能多地研究了这个主题 但没有找到解决方案 在除 Internet Explorer 版本 8 或 9 之外的所有浏览器中 下面的脚本适用于加载 Google 地图 在IE8 and IE9但是 Google 地图 API v3 似乎无
  • Meteor Angular 2 应用程序中的警报仅在浏览器中单击后才会出现

    我已经在 Meteor Angular 2 应用程序的页面上实现了 ng2 bootstrap ngb alert 当我将警报推送到打字稿中的警报数组时 只有在再次单击浏览器窗口后才会显示警报 推送是在 Accounts createUse
  • 如何正确配置meteor以与节点文件上传模块“multer”一起使用

    我刚从流星开始 我找到并添加了 multer 包 meteor add pfafman multer 现在 我想知道如何配置meteor的服务器端来使用 在我的普通节点应用程序中 我像这样使用它 app use multer dest up
  • Angular 5 - 谷歌未定义(谷歌地图)

    我想在我的 Angular 5 应用程序上使用谷歌地图 但遇到了一些问题 加载视图时 我在 js 控制台中收到错误 LoginComponent Host ngfactory js sm 1 ERROR ReferenceError goo
  • Google 地图 API v3 方向的自定义图标

    我知道如何更改标准谷歌地图 api v3 上的图标 有没有办法改变地图上的图标和方向
  • Google 地图 Javascript v3 折线点击事件

    我正在尝试显示一张地图 其中有多条路线布置为折线 单击多段线时 我想显示特定于该线的数据 将数据与线关联不是问题 但无论单击哪条线 显示的数据都会与最近绘制的线关联 就好像每条新折线都会覆盖最后一条线一样 我有一个数据库 其中包含 gpx
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应
  • 使用javascript在谷歌地图中绘制多边形

    我想在谷歌地图中绘制多边形 我正在使用示例代码http jsfiddle net rvsMH 1 http jsfiddle net rvsMH 1 但它不起作用并且没有获取数组或纬度 经度值 我不知道出了什么问题
  • 带有方向的谷歌静态地图

    我的项目列表中有带有迷你地图的生成地点 地图上应该有 2 个点以及这两点之间的彩色道路方向 它应该看起来像这样 这应该是静态图片 因为页面上会有很多这样的不同方向的图片 但正如我所见 谷歌静态地图不允许绘制这样的图像 两点之间只能有直线 如
  • 无法从 Google Direction Service api 获取优化路线

    我试图通过提供航点来使用 google Direction api 找到优化路线 以下是我使用过的航点 起始点 LHR 第一个路径点 豪恩斯洛 第二个路径点 哈灵顿 When I tried to find the optimized tr
  • Google 地图 - 如何获取空白底图

    我想要一个空白的谷歌地图 没有任何显示路线图 地形 混合或卫星数据的底图 只有一个白色背景来仅显示我的图层 那可能吗 hexblot 的建议是正确的 即查看自定义地图类型文档 这是我在没有任何控制的情况下获得空白地图 白色背景 所做的事情
  • 如何使 Meteor 上的服务器可以访问文本文件

    我很惊讶我无法在这里搜索我的答案 似乎没有其他人遇到这个问题 当您运行meteor服务时 js html等被打包在 meteor local build文件夹中 但它似乎排除了不是js或html的内容 我有一个名为 magicsets 的文
  • MongoDB:如何在更新之前对查询进行排序

    我正在编写一个 Meteor Node js 应用程序 它在后端使用 MongoDB 在我的代码中的某个时刻 我需要更新specific集合中的文档 我需要使用 Mongo 的 update 方法 但我在传递正确的 复杂的 查询以缩小到该特
  • 流星 OSX 错误:SQLITE_CANTOPEN:无法打开数据库文件

    我运行了以下命令 meteor create myapp 并收到以下错误消息 错误后重试 Error SQLITE CANTOPEN 无法打开数据库文件 stack Getter 错误后重试 Error SQLITE CANTOPEN 无法
  • 地图 API v3:计算方位

    我已经为此苦苦挣扎了一段时间 需要一些建议 我看过一些类似的主题 但找不到适合我的答案 我正在使用谷歌地图 API 创建一个应用程序 它将确定您的位置 确定特定点 b 点 然后移动箭头以指向 b 点的方向 我在计算方位时遇到困难 有人可以提

随机推荐

  • 如何解决 Eclipse SVN 中的冲突

    在使用 Eclipse 进行编码并使用 SVN 作为团队存储库时 我在 Eclipse 中遇到冲突 假设我有冲突并且有 3 个自动生成的文件 解决冲突后 我找不到如何提交冲突解决方案并自动删除生成的文件的命令 在Eclipse之外的SVN中
  • 在 PHP 中附加 XML 节点

    大家好 有人可以帮我用 PHP 修改下面的 XML 文档吗 这个问题的主要原因是我想附加一个虚拟 XML 节点 其标签名称为Service到活动 gt gt 正文 gt gt 服务 gt gt 服务安装 下面是XML文档
  • 在单元测试中提取哈希种子

    我需要获取 python 用于复制的随机哈希种子failing单元测试 If Python哈希种子 https docs python org 3 using cmdline html envvar PYTHONHASHSEED被设置为非零
  • TS 2540:无法分配给样式,因为它是只读属性

    我正在创建一个textarea我的 TSX 标记中的元素 以及Vim 中的 TS 类型检查器 https github com neoclide coc nvim抱怨2540 Cannot assign to style because i
  • 仅第一个媒体查询工作

    使用媒体查询时 似乎只有第一组有效 我不知道为什么 如果我交换它们 那么仍然只有第一个有效 我尝试过从最大宽度更改为最小宽度 我尝试删除 and 条件 我尝试删除所有 Javascript 我尝试删除所有 CSS 只保留带有 body di
  • PowerShell Unicode 字符意外转换

    我有一个程序 它使用一些哈希表来解析信息 我遇到了一些关于外国字符的奇怪问题 下面是准确的表述 Props P1 Norte Americano e Ingl s Expressions E1 Props P1 Expressions E1
  • 什么是 Linux 本地定时器中断?

    一切都在标题中 欢迎任何优秀文档的链接 本地定时器中断是在 APIC 上实现的定时器 它仅中断特定的 CPU 而不是引发可由任何 CPU 处理的中断 Bovet 和 Cesati 的 Understanding the Linux Kern
  • 在 C# 中将 string.Empty 转换为(通用)T?

    我有一个实用方法 它从旧的返回强类型值 INI配置类型文件 带有签名 internal static T GetIniSetting
  • 使用 Google 登录,仅允许组织域帐户

    我正在尝试创建一个只能通过 Google 登录才能访问且只能使用 GSuite 组织域 的 Web 应用程序 我希望这样做 而不需要事先初始化允许哪些域 这意味着它允许在 Google 下注册的所有电子邮件地址 但不允许 gmail com
  • 发布到 azure 后,与 MVC4 捆绑不起作用

    您好 我正在尝试为我的应用程序捆绑我的脚本 我的调试正在工作 如果我使用 Web debug 发布 一切都会正常 但是当我使用 Web releases 发布时 我的脚本不会加载 一切都在本地运行 只有当我从 VS2012 发布到 Azur
  • Swift 3 - Firebase 推送通知,我该怎么办?

    我确实喜欢下面的 Swift 2 但它在 Swift 3 中不起作用 我该如何提供这个 如果有人解释一下那就太好了 didFinishLaunchingWithOptions let notificationSettings UIUserN
  • 如何使用ANTLR生成的语法文件?

    我认为这是一个愚蠢的问题 但我刚刚开始使用 ANTLR 我将他们教程中的 SimpleCalc 语法放在一起 并以 C 作为目标语言生成它 我得到了 SimpleCalcParser c h 和 SimpleCalcLexer c h 作为
  • 正则表达式:懒惰更糟糕吗?

    我一直这样写正则表达式 a href target blank lt a 但我刚刚了解到这个懒惰的事 http www regular expressions info examples html我可以这样写 a href target b
  • Python无法访问字典

    Getting TypeError string indices must be integers当尝试访问 python 中的字典时 我尝试过使用json loads r2 这产生了 TypeError the JSON object m
  • 如何使用getCropAndSetWallpaperIntent?

    我尝试使用 getCropAndSetWallpaperIntent 方法 但出现错误 这是我的代码 Uri uri Uri parse content getFilesDir image path ContentResolver cont
  • Angular 8 嵌套拖放

    不幸的是我找不到常见问题的解决方案 这是代码的链接https stackblitz com edit angular ygwaxs https stackblitz com edit angular ygwaxs 我有这样的场景 从服务器我
  • 简单的 Javascript 碰撞检测?

    我正在尝试使用 jquery javascript html 和 css 制作一个简单的游戏 我一直陷入碰撞检测 code var map 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
  • 在 Sequel 中使用 UTC?

    我不想将时间存储在我当地的时区 但续集让我变得非常困难 我可以在将它们放在那里之前将它们设置为 UTC 有点痛苦 但是当我将它们取出时 它会假设它们是本地日期 然后它们都是未来的 8 小时 这是还没有实施的事情吗 如果是这样 有什么解决方法
  • UISearchBarSearchField 背景视图颜色

    I am trying to change the background color of the search bar text field and i have searched and tried lots of solutions
  • 流星模板中包含的谷歌地图被渲染两次

    我有以下模板