将一些数据从一个控制器传输到另一个控制器,或者如何将控制器更改为服务
Transfer some data from one controller to another, or how to change controller to service
如何将信息从一个控制器传输到另一个控制器,或者如何从控制器提供服务?我需要获取坐标并将其与其他一些变量一起保存到对象中,如果我将依赖项一个控制器放入另一个控制器中,它不起作用。下面控制器中的大部分信息都是无关紧要的,我只需要纬度和长度,并将其保存在其他控制器中。
.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);
});
})
})
您可以创建一个将作为全局对象工作的工厂
myApp.factory('Data', function () {
return { FirstName: '' };
});
myApp.controller('FirstCtrl', function ($scope, Data) {
$scope.Data = Data;
});
myApp.controller('SecondCtrl', function ($scope, Data) {
$scope.Data = Data;
});
或者使用服务,与geter一个seter
//services
app.service('Shared',function(){
var data={value :0};
return{
getData: function(){
return data.value;
},
setData: function(value){
data.value = value;
}
};
});
你必须使用称为服务或工厂的东西。它们非常相似。(查看了解差异:AngularJS:何时使用服务而不是工厂)您可以调用函数并存储要在整个应用程序中使用的数据。服务的基本设置将是:
var app = angular.module('moduleName');
app.service('serviceName', [function(){
//Your code here
//i.e.
var storedValue;
function setValue(value){
storedValue = value;
}
function getValue(){
return storedValue;
}
}]);
使用该服务的控制器必须注入该服务。
var app = angular.module('moduleName');
app.controller('testCtrl', ['$scope', 'serviceName', function($scope, serviceName){
//Do something with the stored value
$scope.someVariable = serviceName.getValue();
//Set global variable
serviceName.setValue(someVariable);
}
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 将值从html传递到AngularJS控制器
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 从控制器继承了隔离的作用域以生成可重用的指令
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 如何删除除冒号、数字和'上午'或者'下午'
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- Nodejs API控制器,用于在API之间切换
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 将一些数据从一个控制器传输到另一个控制器,或者如何将控制器更改为服务
- 你必须在视图中声明控制器吗?或者你可以在$routeProvider中声明它吗
- 在angularJs中从控制器中绑定ngModel,或者从ngModel中调用函数