将数据从服务传递到控制器



我在使用google API将数据从服务发送到控制器时遇到了一个小问题。有人能看看下面的代码并给我一些建议吗?注射很好,我没有看到任何错误。我几乎没有尝试什么。1.使用服务方法的正常绑定(例如getCurrentPos())。它将返回一个存储pos信息的对象2.$rootScope$广播3.angular.copy()

//in the service--------
var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
this.marker = new google.maps.Marker({
    position: position,
    map: map,
    title: markers[i][0],
    draggable: true,
    icon: '../img/png/shopper1.png'
});
var personMarker = this.marker;
this.marker.addListener('drag', function() {
  console.log('lat:'+personMarker.getPosition().lat()+' lng:'+personMarker.getPosition().lng());
  currentPos.lat = personMarker.getPosition().lat();
  currentPos.lng = personMarker.getPosition().lng();
  // myPos = personMarker.getPosition();
  myPos = [personMarker.getPosition().lat(), personMarker.getPosition().lng()];
  angular.copy(myPos, scope.currentPos); //not working
  console.log('scope.currentPos',scope.currentPos);
  // $rootScope.$broadcast('evtUpdateMyPos', { //tried but not working.
  //   'lat': personMarker.getPosition().lat(),
  //   'lng': personMarker.getPosition().lng()
  // });
  console.log("mypos:", myPos);
});
//in the controller-------
$scope.currentPos = [];
//Listen on a broadcast event
// $scope.$on('evtUpdateMyPos', function (event, myPos){
//   console.log('evtUpdateMyPos is fired.', myPos); //this logs here.
//   // $scope.currentPos = angular.copy(myPos); //this dos not help
//   // $scope.currentPos = myPos; //this does not hlep.
// })

在某些情况下,当你试图从外部库更新你的模型时,比如在使用谷歌地图的情况下,你应该用这样的东西包装setter:

$timeout(function(){
   myModel = 'Google.map.data'
});

$rootScope.$applyAsync(function(){ // this could also be $scope
   myModel = 'Google.map.data'
});

myModel可以是服务的属性,也可以是$scope变量($scope.myModel)

相关内容

  • 没有找到相关文章

最新更新