如何将lat / long值绑定到knockout viewmodel方法?

时间:2016-04-20 21:08:09

标签: javascript ajax google-maps knockout.js

我正在尝试使用knockout构建一个应用程序,以在谷歌地图上显示一些位置详细信息和标记 我通过检查是否' navigator.geolocation'来根据用户位置显示谷歌地图。是真的。如果是,我正在调用' navigator.geolocation.getCurrentPosition()'显示以' position.coords.latitude'检索到的纬度为中心的地图的方法。

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

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

检索坐标并显示地图后,我想显示地图标记&对另一个api进行ajax调用并显示结果 - 我在viewModel中处理所有这些结果。所以这就是我的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调用使用未定义的lat,long值进行 - 因为在触发ajax调用时不会检索值。在单击DOM元素时调用fetchList时,ajax调用将成功触发。我应该如何重构我的代码,以便在页面加载时调用fetchList,只有在检索到坐标之后?另外,是在viewModel中移动initMap逻辑并使lat long observables成为一个好主意吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想进行ajax调用并使用该响应放置标记?您应该调用该方法将标记放在ajax调用的回调中。