【发布时间】:2015-12-10 15:32:04
【问题描述】:
我想知道在哪里放置 Tracker.autorun 以保证之前加载所有其他内容。 我以为
Meteor.startup(function(){...});
用于这种情况,但是当我从 mdg:geolocation 引用 Geolocation 对象时,它告诉我它尚未定义:
未捕获的类型错误:无法读取 null 的属性“lng”
我使用以下变通方法,但希望有更优雅的解决方案:
Meteor.startup(function () {
trackerGeolocationInit = setInterval(enableLocationTracking, 100);
});
enableLocationTracking = function(){
var location = Geolocation.latLng();
if(location === null)
return;
else
clearInterval(trackerGeolocationInit);
Tracker.autorun(function () {
var location = Geolocation.latLng();
Meteor.users.update(Meteor.userId(), {
$set: {
"profile.location": {
type: 'Point',
coordinates: [location.lng, location.lat]
}
}
});
});
}
【问题讨论】:
-
IIRC,第一次读取是
null。仅当它不是null时才尝试继续,并且一旦更新它就会重新运行。顺便说一句,我不会创建通过setInterval()运行的autorun内部代码
标签: javascript meteor meteor-tracker