我的應用程序使用離子時出現問題。在我的Service.js中,我有一個函數可以檢索我的位置,並在我的controller.js中有一個函數,當我按下我的html頁面中的按鈕時,將用戶發送到另一個頁面。所以,當我按下按鈕時,在應用程序發送給另一個頁面之前,我希望在我的service.js(geolocation)中啓動該函數,並且只有在地理位置成功時才發送給我。使用服務變量的控制器
我該怎麼做?
我想我可以在service.js上保存一個變量。如果函數進入onSuccess,我保存變量= 1,如果函數輸入錯誤,我保存變量= 0。但我不知道如何在我的控制器上使用此變量...
service.js:
.factory('position', function() {
return{
positioning : function(){
var geocoder;
geocoder = new google.maps.Geocoder();
initialise = function() {
navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy : true, timeout : 5000, maximumAge : 0});
function onSuccess(position){
myLatlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
}
function onError(error){
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
cordova.plugins.settings.openSetting("open", function(){console.log("opened settings")},function(){console.log("failed to open nfc settings")});
}
}
google.maps.event.addDomListener(window, 'load', initialise());
Controller.js:
.controller('MainCtrl', function($scope,$state, position) {
$scope.mappa=function(){
$state.go('tab.mappa');
position.positioning();
}
$scope.dettagli=function(){
$state.go('tab.dettagli');
position.positioning();
}
$scope.strada=function(){
$state.go('tab.strada');
position.positioning();
}
$scope.segnalazioni=function(){
$state.go('tab.segnalazioni');
position.positioning();
}
$scope.SOS=function(){
$state.go('tab.sos');
position.positioning();
}
html頁面:
<ion-view view-title="Home" ng-controller="MainCtrl">
<ion-content class="padding">
<div >
<!-- LA MIA POSIZIONE -->
<div class="max-width width-forty">
<button class="button button-full button-royal" ng-click="mappa()">
<table>
<tr><td><i class="fa fa-map fa-hx fa-inverse"></i></td></tr>
<tr><td class="button-text-map-sos">La mia posizione</td></tr>
</table>
</button>
</div>
.........
..........
.........
EExcuse我,我已經改變了一些代碼,因爲我在發佈問題之前寫了一些文本,我在控制器中注入了位置。 position.positioning()效果很好,但在GPS關閉和功能的onError進入,應用程序給我在接下來的頁面,但這種只顧如果函數的onSuccess – Michael
@邁克爾請看看我的更新回答。 – Deurco
你能寫一個承諾的例子嗎? – Michael