Я создаю ионное приложение, которое работает с исследованиями и маршрутами на карте. Вы вводите нужное местоположение, и оно уже отправляет маршрут из вашего текущего местоположения в нужное место. Он работает отлично. Единственная проблема в том, что мне нужно вызвать функцию, которая находится внутри контроллера карты, и мне нужно, чтобы эта функция запускалась после работы директивы, которая находится вне контроллера. Проще говоря, мне нужно вызвать функцию контроллера в директиве. Я видел несколько примеров в Интернете и здесь, в SO, но ни один из этих примеров не смог добиться успеха, надеюсь, вы сможете мне помочь.Функция вызова контроллера в директиве внешнего контроллера
пример:
.controller("atigmaps", function($ scope, $ state, $ ionicModal, $ rootScope) {
$ Scope.load_map = function() {
/// ...
}
})
.directive('example', function($ ionicModal, LocationService) {
$ Scope.choosePlace = function(place) {
LocationService.getDetails(place.place_id).then(function(location) {
$ Scope.location = location;
$ Scope.close();
$ Scope.load_map() < -- - This
function is within the controller
});
};
}
Моя функция
var geocoder;
var map;
var marker;
geocoder = new google.maps.Geocoder();
marker = new google.maps.Marker({
map: $scope.model.myMap,
draggable: true,
icon:'pin_route.png',
});
function carregarNoMapa(endereco) {
geocoder.geocode({ 'address': endereco + ', Brasil', 'region': 'BR' }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
$('#txtEndereco').val(results[0].formatted_address);
$('#txtLatitude').val(latitude);
$('#txtLongitude').val(longitude);
$('#dest').val(document.getElementById('txtEndereco').value);
$scope.atualizalocation();
var location = new google.maps.LatLng(latitude, longitude);
marker.setPosition(location);
$scope.calcRoute();
$scope.model.myMap.setCenter(location);
$scope.model.myMap.setZoom(15);
}
}
});
}
Моя Директива
.directive('locationSuggestion', function($ionicModal, LocationService){
return {
restrict: 'A',
scope: {
location: '='
},
link: function($scope, element){
console.log('locationSuggestion started!');
$scope.search = {};
$scope.search.suggestions = [];
$scope.search.query = "";
$ionicModal.fromTemplateUrl('location.html', {
scope: $scope,
focusFirstInput: true
}).then(function(modal) {
$scope.modal = modal;
});
element[0].addEventListener('focus', function(event) {
$scope.open();
});
$scope.$watch('search.query', function(newValue) {
if (newValue) {
LocationService.searchAddress(newValue).then(function(result) {
$scope.search.error = null;
$scope.search.suggestions = result;
}, function(status){
$scope.search.error = "There was an error :(" + status;
});
};
$scope.open = function() {
$scope.modal.show();
};
$scope.close = function() {
$scope.modal.hide();
};
$scope.choosePlace = function(place) {
LocationService.getDetails(place.place_id).then(function(location) {
$scope.location = location;
$scope.close();
});
};
});
}
}
})
Спасибо за быстрый друг ответа, я очень новичок в ионной структуре, может дать мне свет с простым примером? –
Здесь вы идете, я сделал это без редактора, так что, может быть, я что-то забыл, но вы можете себе представить – Del
Я делал тесты, но он не выполняет функцию –