Javascript 流星全球跟踪器放在哪里。自动运行
我想知道在哪里放一个Tracker.autorun,以保证在加载之前加载所有其他内容。 我以为Javascript 流星全球跟踪器放在哪里。自动运行,javascript,meteor,meteor-tracker,Javascript,Meteor,Meteor Tracker,我想知道在哪里放一个Tracker.autorun,以保证在加载之前加载所有其他内容。 我以为 Meteor.startup(function(){...}); 用于此类情况,但当我从mdg:Geolocation引用Geolocation对象时,它告诉我它尚未定义: 未捕获的TypeError:无法读取null的属性“lng” 我使用以下解决方法,但我希望有一个更优雅的解决方案: Meteor.startup(function () { trackerGeolocationInit
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]
}
}
});
});
}
我正在编写一个有趣的应用程序,这很有效:
Tracker.autorun(function () {
if(Meteor.userId())
{
var latLng = Geolocation.latLng();
var userId = Meteor.userId();
if(latLng && userId)
{
//do something
}
}
});
不需要使用间隔。我只需输入一个名为geolocation.js的文件。IIRC,它第一次读取时为
null
。仅当它不是null
时才尝试继续,并且它将在更新后反应性地重新运行。顺便说一句,我不会在代码内部创建一个通过setInterval()运行的autorun