2016-04-20 50 views
0

我想用knockout來構建一個應用程序來顯示一些位置的細節和標記在谷歌地圖上 我有谷歌地圖顯示基於用戶位置通過檢查如果'navigator.geolocation'爲真。如果爲true,那麼我調用'navigator.geolocation.getCurrentPosition()'方法來顯示以'position.coords.latitude'檢索的lat long爲中心的地圖。如何將lat/long值綁定到knockout viewmodel方法?

var fooBarApp = (function(){ 
... 
initMap: function() { 
    ... 
    } 

    return { 
     lat: lat, 
     long: long 
    } 
})(); 

座標被檢索並顯示在地圖後,我想顯示的地圖標記&做一個AJAX調用另一個API並顯示結果 - 所有這一切,我是我的ViewModel內處理。因此,這裏是我的視圖模型是什麼樣子:

var viewModel = new function() { 

    self.fetchList = function() { 
    //ajax call to api using fooBarApp.lat & fooBarApp.long 
    } 

    self.fetchList() // method call to display results on page load 
} 

目前在頁面加載時,fetchList ajax調用發生與不確定的緯度,經度值 - 導致值不通過Ajax調用被觸發的時間檢索。當點擊一個DOM元素調用fetchList時,ajax調用會成功觸發。我應該如何重構我的代碼,以便在頁面加載時調用fetchList,僅在檢索到座標後才調用?另外,移動viewModel中的initMap邏輯並使lat long observables成爲一個好主意?

+0

地方'ko.applyBindings(視圖模型)'你要確保你的後文件已準備就緒,並坐標檢索 –

+0

不知道如何/在哪裏檢查時的座標檢索... – Ankita

+0

編輯:我把applyBinding和AJAX調用後地圖閒置,似乎工作。謝謝! 'google.maps.event.addListenerOnce(地圖, '空閒',函數(){ ko.applyBindings(視圖模型); viewModel.fetchList(); });' – Ankita

回答

0

如果我的理解正確,你想做出ajax調用,並與該響應,放置標記?您應該調用該方法將標記放置在ajax調用的回調中。

+0

爲了使AJAX調用,我需要緯度/長度值,這些值在初始頁面加載時未定義。如果點擊事件觸發了相同的ajax調用,經緯度值將被正常檢索。我需要在獲取值之後進行ajax調用,但不知道如何處理。 – Ankita

相關問題