2015-04-16 47 views
0

這裏地理位置數據是我的流星代碼片段 - http://meteorpad.com/pad/sYoY8Xzjzd3sejFC4/Location爲什麼不從助手返回模板

正如你所看到的,應該寫在<p>標記您的當前位置(您可以檢查是否res[0].formatted_address有任何數據通過打開瀏覽器控制檯 - 它應該包含您的當前位置)。

但由於某些原因<p>保持爲空。

問題開始在navigator.geolocation.getCurrentPosition回調 - 如果我修改代碼,因此數據的回調外返回 - 數據轉到<p>

例子:

Template.location.helpers 
    location: -> 
    navigator.geolocation.getCurrentPosition (position) -> 
     if GoogleMaps.loaded() 
     geocoder = new google.maps.Geocoder() 
     geocoder.geocode {'latLng': new google.maps.LatLng(position.coords.latitude, position.coords.longitude)}, (res, status) -> 
      console.log res[0].formatted_address 
      res[0].formatted_address 
    return 123 

我試着用Session玩變量,它的工作原理 - http://meteorpad.com/pad/nR4vgj7HqJvCdt3wE/Location-Session,但爲什麼從回調信息不去模板,以及如何解決它

回答

1

那是因爲res[0].formatted_address不是像會話變量反應數據。

,並在當時的助理返回res[0].formatted_address的值是「」的模板。

你可以這樣檢查。

var test = res[0].formatted_address 
if test != '' 
    console.log 'hi iam a non reactive value and also im returning nothing' 
else 
    console.log "yea my response is " + res[0].formatted_address 

而且OFC因爲此刻你的值返回給模板,你會得到第一的console.log值''

會話變量的作品,因爲會議是一種反應性的數據,也是助手運行assyncronus,所以首先幫助者尋找Session.get('location')這個值是'',但是當地理位置上的回調完成時會話的值不同並且助手的計算重新運行該函數並且它返回時,幾秒鐘後,返回價值。

+0

所以,最好的選擇是使用'會話'這個? – Shtirlits