以下代碼使用指令在負載上查找當前用戶iPhone地理位置並相應地加載谷歌地圖。谷歌地圖和控制器之間的角度指令範圍
不幸的是,從該指令geolocationData數據變量不被共享到HTML頁腳{{geolocationData}} ...
那麼,如何在這種情況下,通過geolocationData對面的指令到HTML頁面和/或控制器。
謝謝。
指令:
'use strict';
angular.module('MyApp.directives', ['ngCordova'])
.directive('map', function($cordovaGeolocation) {
return {
restrict: 'E',
scope: {
onCreate: '&'
},
link: function ($scope, $element, $attr) {
function initialize() {
if (!$scope.geolocationData) {
$scope.geolocationData = {};
}
$cordovaGeolocation
.getCurrentPosition()
.then(function (position) {
var lat = position.coords.latitude
$scope.geolocationData.latitude = lat;
var long = position.coords.longitude
$scope.geolocationData.longitude = long;
console.log("POSITION: ", lat, long); //works
var mapOptions = {
center: new google.maps.LatLng(lat, long),
// center: $scope.geolocationCenter,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($element[0], mapOptions);
$scope.onCreate({map: map});
// Stop the side bar from dragging when mousedown/tapdown on the map
google.maps.event.addDomListener($element[0], 'mousedown', function (e) {
e.preventDefault();
return false;
});
}, function(err) {
// error
});
}
google.maps.event.addDomListener(window, 'load', initialize);
}
};
});
而下面的控制器:
'use strict';
angular.module('MyApp.controllers', ['ngCordova'])
.controller('MapCtrl', function($scope, $ionicLoading, $cordovaGeolocation) {
if (!$scope.geolocationData) {
$scope.geolocationData = {};
}
};
而下面的HTML片段:
<body ng-app="MyApp" ng-controller="MapCtrl">
<!-- MAP AREA -->
<ion-content scroll="false" style="bottom:50%;">
<map on-create="mapCreated(map)"></map>
</ion-content>
<ion-footer-bar class="bar-stable">
{{geolocationData}}
</ion-footer-bar>
</body>
謝謝您的時間和精力吉爾斯。總是非常感激。我放棄了您的解決方案,但無法使其工作,因此我採用以下方法作爲解決方法。 – Jules 2014-11-03 19:55:43
我很高興你找到了解決方案。 [與此同時,這是一個接近你的代碼的bin,它說明了我的迴應的第一個選項。](http://jsbin.com/qosezuwixa/1/edit?html,js,output) – Gilles 2014-11-03 21:13:10
這真的很酷很清楚,謝謝您! :) – Jules 2014-11-03 21:15:40