【发布时间】:2016-03-15 09:08:28
【问题描述】:
如何将信息从一个控制器传送到另一个控制器,或者如何从控制器提供服务?我需要获取坐标并将其与其他一些变量一起保存到对象中,如果我将依赖一个控制器放入另一个控制器中它不起作用。下面控制器中的大部分信息都是无关紧要的,我只需要lat和long,并将其保存在其他控制器中。
.controller('MapCtrl', function($scope, $cordovaGeolocation, $ionicLoading, $ionicPlatform, $cordovaScreenshot, $ionicPopup) {
$ionicPlatform.ready(function() {
$ionicLoading.show({
template: '<ion-spinner icon="bubbles"></ion-spinner><br/>Acquiring location!'
});
var posOptions = {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 0
};
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
$scope.duzina = long;
$scope.sirina = lat;
console.log("Širina: " + lat + '\n' + "Dužina: " + long);
var myLatlng = new google.maps.LatLng(lat, long);
var mapOptions = {
center: myLatlng,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
$scope.map = map;
$ionicLoading.hide();
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
draggable: true,
label: 'A',
position: myLatlng,
map: map,
title: 'Trenutna Lokacija'
});
var labels = 'BCDEFGHIJKLMNOPQRSTUVWXYZ';
var labelIndex = 0;
google.maps.event.addListener(map, 'click', function(event) {
addMarker(event.latLng, map);
});
function addMarker(location, map) {
var marker = new google.maps.Marker({
position: location,
label: labels[labelIndex++ % labels.length],
map: map
});
}
}, function(err) {
$ionicLoading.hide();
console.log(err);
});
})
})
【问题讨论】:
-
控制器之间有什么关系?如果它们没有相互嵌套,那么您需要一些临时存储,例如 localstorage,或者通过 API 保存到后端,然后通过 API 调用检索(但保存到 localstorage 更好)。
-
有趣,我尝试使用 localStorage 但它不起作用,我会使用服务来完成
标签: javascript angularjs input controller ionic-framework