我想用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成爲一個好主意?
地方'ko.applyBindings(視圖模型)'你要確保你的後文件已準備就緒,並坐標檢索 –
不知道如何/在哪裏檢查時的座標檢索... – Ankita
編輯:我把applyBinding和AJAX調用後地圖閒置,似乎工作。謝謝! 'google.maps.event.addListenerOnce(地圖, '空閒',函數(){ ko.applyBindings(視圖模型); viewModel.fetchList(); });' – Ankita