2014-07-08 19 views
5

Tôi đang cố gắng làm cho các địa điểm tự động hoàn thành của Google hoạt động với js góc. Đây là jsfiddle - Mô hình không được cập nhật sự kiện after'place_change '. Nó đang được cập nhật về thay đổi đầu vào.Các địa điểm của Google tự động hoàn tất với js góc

Dưới đây là html mã - HTML

<body ng-app="mapApp"> 
    <div ng-controller="MapController"> 
     <input id="from" type="text" ng-model="user.from" placeholder="Type Address" class="ng-pristine ng-valid" autocomplete="off"> 
     <input type="hidden" ng-model="user.fromLat"> 
     <input type="hidden" ng-model="user.fromLng"> 
      <p>{{user.from}} <br> {{'Latitude : ' + user.fromLat + ', Longitutde : ' + user.fromLng}}</p> 
    </div> 
</body> 

Java Script

var mapApp = angular.module('mapApp', []); 

mapApp.controller('MapController', function ($scope) { 
    $scope.user = {'from': '', 'fromLat': '', 'fromLng' : ''}; 
    var options = { 
     componentRestrictions: {country: "in"} 
    }; 
    var inputFrom = document.getElementById('from'); 
    var autocompleteFrom = new google.maps.places.Autocomplete(inputFrom, options); 
    google.maps.event.addListener(autocompleteFrom, 'place_changed', function() { 
     var place = autocompleteFrom.getPlace(); 
     $scope.user.fromLat = place.geometry.location.lat(); 
     $scope.user.fromLng = place.geometry.location.lng(); 
     $scope.user.from = place.formatted_address; 
    }); 
}); 
+0

liên kết jsFiddle bạn dường như không có tác dụng – rob

+0

cập nhật JsFiddle - http://jsfiddle.net/punchouty/cTD2a/6/ – Puja

+0

'var inputFrom = document.getElementById ('từ'); 'là chống lại Angular không có thao tác dom từ bộ điều khiển thực hành tốt nhất, phải không? Làm thế nào chúng ta có thể đạt được điều này với một chỉ thị? – sgimeno

Trả lời

5

Bạn cần phải nói với góc khi sự kiện place_change bị sa thải vì nó biết khi nào nên cập nhật các DOM. Bạn có thể làm điều đó bằng cách gọi $scope.$apply(). ví dụ:

google.maps.event.addListener(autocompleteFrom, 'place_changed', function() { 
     var place = autocompleteFrom.getPlace(); 
     $scope.user.fromLat = place.geometry.location.lat(); 
     $scope.user.fromLng = place.geometry.location.lng(); 
     $scope.user.from = place.formatted_address; 
     $scope.$apply(); 
    }); 
+0

Cảm ơn rob. Nó đã làm việc :) – Puja

Các vấn đề liên quan