2016-11-26 2 views
1

Mein Problem ist es, alle Benutzer in der Nähe eines Zählers zu suchen und anzuzeigen. Nachdem ich viel gegoogelt habe, ohne eine gute Lösung zu finden, fange ich an, sehr einfachen Code zu schreiben (ich benutze mdg: geolocation).Den Speicherort des Benutzers in Meteor speichern

main.js

// in the client side 
Template.localPosition.helpers({ 
    'getLocalPosition': function(){ 
     var currentUserId = Meteor.userId(); 
     if(currentUserId) { 
      var localPos = Geolocation.latLng(); 
      return "LAT:" + localPos.lat + " LNG:" + localPos.lng; 
     } 
    } 
}); 

In main.html zeige ich eine Vorlage 'local' mit {{getLocalPosition}} Anruf. Es funktioniert, aber in der Konsolentafel ich habe:

Exception in template helper: TypeError: Cannot read property 'lat' of null

Warum ist das?

+0

Können Sie bitte den Rest des Körpers HTML-Code zeigen? – blueren

+0

https://jsfiddle.net/carrysesse/4Lrwjtam/ – IfThenElse

+0

Ich habe die Lösung auf Ihre Frage zurückgesetzt, da wir hier Fragen für zukünftige Leser aufbewahren möchten. Bitte fügen Sie Ihre Antwort unten in einem Antwortfeld hinzu, danke. – halfer

Antwort

0

Der Fehler ist, weil die var localPosnull ist, sollten Sie eine if-Anweisung zu überprüfen, ob localPos einen lesbaren Wert hat:

Template.localPosition.helpers({ 
    'getLocalPosition': function(){ 
     var currentUserId = Meteor.userId(); 
     if(currentUserId) { 
      var localPos = Geolocation.latLng(); 
      if(localPos) { 
       return "LAT:" + localPos.lat + " LNG:" + localPos.lng; 
      } 

     } 
    } 
}); 
+0

In der Webseite sehe ich die lat und lng Werte und mit einer Warnung (localPos.lat) zeigt es korrekten Wert – IfThenElse

+0

Weil zuerst, wenn Ihre app gerendert wird, die Daten möglicherweise noch nicht bereit sind, es braucht Zeit für den Server Daten zu senden an den Kunden. Daher kann Ihr 'localPos' zuerst' null' sein, aber später hat es den korrekten Wert. – Khang

+0

ty @Khang gibt es eine Lösung, Serverzeit zu warten? – IfThenElse

Verwandte Themen