我已经在互联网上查了一段时间,试图弄清楚我的代码有什么问题,而且无法找到合适的答案。
Template.map.onCreated(function() {
Meteor.setTimeout(function() {
GoogleMaps.ready('exampleMap', function(map) {
var marker = new google.maps.Marker({
position: map.options.center,
map: map.instance
});
});
}, 2000);
});
我只是试图设置2秒延迟GoogleMap功能触发,但它不起作用。我已经尝试了很多各种各样的事情,例如将var声明为我的函数然后匿名触发setTimeout
函数等等......但是没有运气......我没有从控制台收到错误所以我觉得我的代码编写得很好,而Meteor文档并没有提供有关setTimeout
函数的大量信息。
这也不起作用:
Template.map.onRendered(function() {
Tracker.afterFlush(function(){
GoogleMaps.ready('exampleMap', function(map) {
var marker = new google.maps.Marker({
position: map.options.center,
map: map.instance
});
});
});
});
答案 0 :(得分:-1)
将setTimeout中的代码转换为外部函数,如下所示:
function prepareMap() {
GoogleMaps.ready('exampleMap', function(map) {
var marker = new google.maps.Marker({
position: map.options.center,
map: map.instance
});
});
}
}
在setTimeout 中调用函数,不带括号,如下所示:
Template.map.onCreated(function() {
setTimeout(prepareMap, 2000);
});
如果使用括号调用函数,则函数将立即执行,而不会在timeOut中指定延迟。