我想知道在哪里放置一个Tracker.autorun以保证之前其他所有内容都已加载。 我以为
Meteor.startup(function(){...});
用于这种情况,但是当我从mdg:geolocation引用Geolocation对象时,它告诉我它还没有定义:
未捕获的TypeError:无法读取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]
}
}
});
});
}
答案 0 :(得分:2)
我正在编写一个有趣的应用程序,这很有效:
Tracker.autorun(function () {
if(Meteor.userId())
{
var latLng = Geolocation.latLng();
var userId = Meteor.userId();
if(latLng && userId)
{
//do something
}
}
});
无需使用间隔。我只是把文件调用geolocation.js。