只运行一次metro.js代码
Running meteor.js code only once
我想在Template.foo.rendered中运行代码一次。我集成了一个传单地图和一个定位控制插件。到目前为止,它运行得很好,但渲染的模板似乎经常重新运行。因此,我在地图上定位用户的标记每隔几秒钟就会重置一次。我只想初始化它一次。
var map, mapInit;
map = void 0;
mapInit = function (element){
map = L.mapbox.map(element, 'examples.map-20v6611k').setView(new L.LatLng(52.02312,13.02627), 11);
L.control.locate({drawCircle: true, position: 'topright'}).addTo(map);
}
Template.map.rendered = function () {
$(window).resize(function () {
var h = $(window).height();
$mc = $('#map');
$mc.css('height', h);
}).resize();
if (!this.rendered) {
mapInit('map');
this.rendered = true;
}
}
您可能需要将映射的DOM元素保存到全局或应用程序变量(此处为Map
),然后将它们重新插入DOM:
var Map;
...
var mapDomElement = $('#map');
if (Map.domElements) {
mapDomElement.replaceWith(Map.domElements);
} else {
Map.mapObject = L.mapbox.map(...) // instantiate map here
Map.domElements = mapDomElement;
}
注意高度重新计算:你不需要这么做。使用CSS弹性框模型最大化地图高度:
<div style="display: flex; flex-flow: column; min-height: 100%">
<div id="map" style="flex: 1"></div>
<div>
... map controls here
</div>
</div>
请参阅flex模型上的答案。"东西到此为止"div是您的地图。
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- 使用每500ms运行一次的jquery函数是个好主意吗
- For循环在Jquery中只运行一次
- 只运行一次metro.js代码