meteor 放哪里 global tracker.autorun
meteor where to put global tracker.autorun
我想知道在哪里放置 Tracker.autorun 以确保其他所有内容都已加载。
我以为
Meteor.startup(function(){...});
用于这种情况,但是当我从 mdg:geolocation 引用 Geolocation 对象时,它告诉我它尚未定义:
未捕获类型错误:无法读取 属性 'lng' of null
我使用以下解决方法,但我希望有更优雅的解决方案:
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.
我想知道在哪里放置 Tracker.autorun 以确保其他所有内容都已加载。 我以为
Meteor.startup(function(){...});
用于这种情况,但是当我从 mdg:geolocation 引用 Geolocation 对象时,它告诉我它尚未定义:
未捕获类型错误:无法读取 属性 'lng' of null
我使用以下解决方法,但我希望有更优雅的解决方案:
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.