2016-01-13 2 views
0

Я следовал This fiddle, чтобы реализовать то же самое в моем ионном приложении.

вот моя директива:

angular.module('mobApp.services'). 
      directive('googlePlaces', function(){ 
       return { 
        restrict:'E', 
        replace:true, 
        // transclude:true, 
        scope: {location:'='}, 
        template: '<input id="google_places_ac" name="google_places_ac" type="text" class="input-block-level"/>', 
        link: function($scope, elm, attrs){ 
         var autocomplete = new google.maps.places.Autocomplete($("#google_places_ac")[0], {}); 
         google.maps.event.addListener(autocomplete, 'place_changed', function() { 
          var place = autocomplete.getPlace(); 
          $scope.location = place.geometry.location.lat() + ',' + place.geometry.location.lng(); 
          $scope.$apply(); 
         }); 
        } 
       } 
      }); 

здесь я использую его в контроллере:

angular.module("mobApp.controllers") 
.controller("AutocompleteTextboxController",function($scope) { 

    $scope.location = ''; 
    $scope.selectionDone = function() { 
     alert('Yay. Location: ' + $scope.location); 
    } 
}); 

Вот я зову эту директиву

<ion-view view-title="{{title}}"> 
<ion-nav-bar class="bar-positive">   
    <ion-nav-back-button></ion-nav-back-button> 
    <ion-nav-buttons side="right"> 
     <button class="button button-icon icon ion-android-done" ng-disabled="selectedItem.id==''" ng-click="selectionDone()"></button> 
    </ion-nav-buttons>  
</ion-nav-bar> 
    <ion-content> 
    <div class="list"> 
     <ion-list ng-show="selectionType == 'place'"> 
     <google-places location=location></google-places> 
     </ion-list> 
    </div>  
    </ion-content> 
</ion-view> 

ответ

0

Попробуйте заменить:

$scope 

с

scope 

В пределах вашей директивы. Параметр $ указывает, что вы вводите область действия, которая на самом деле не входит в функцию ссылок. Хорошее объяснение этого доступно here.