流星在哪里放置全球tracker.autorun

时间:2015-12-10 15:32:05

标签: javascript meteor meteor-tracker

我想知道在哪里放置一个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]
                }
            }
        });
    });
}

1 个答案:

答案 0 :(得分:2)

我正在编写一个有趣的应用程序,这很有效:

   Tracker.autorun(function () {
      if(Meteor.userId())
      {
        var latLng = Geolocation.latLng();
        var userId = Meteor.userId();
        if(latLng &&  userId)
        {
          //do something
        }
     }
    });

无需使用间隔。我只是把文件调用geolocation.js。