[英]How to pass js variable to controller angularjs
我正在尝试将javascript变量传递给控制器角度,我不能这样做,有什么建议吗?
我的功能:
function coordenadas(position) {
var latitud = position.coords.latitude;
var longitud = position.coords.longitude;
}
我的控制器:
'use strict';
/* Controllers */
var moduloMapa = angular.module('BeLiga.indexMapControllers', ['google-maps']);
moduloMapa.controller('controlIndexMap', function($scope) {
obtener_localizacion();
$scope.center = {
latitude: 45,
longitude: -73
};
$scope.zoom = 8;
});
我需要得到函数“coordenadas”的这两个变量的值:
var latitud;
var longitud;
如果页面上存在变量,只要它们在正确的范围内定义,就应该能够毫无问题地使用它们。
这意味着你应该做这样的事情:
var latitud =0;
var longitud =0;
function coordenadas(position) {
latitud = position.coords.latitude;
longitud = position.coords.longitude;
}
在这种情况下我可能会做的是创建一个回调函数:
function coordenadas(position, callback) {
var latitud = position.coords.latitude;
var longitud = position.coords.longitude;
callback(latitud,longitud);
}
在控制器中:
moduloMapa.controller('controlIndexMap', function($scope) {
var somePositionObject = //not specified on the demo code.
//invoking method with callback function to get both values.
coordenadas(somePositionObject,function(latitude, longitude){
$scope.center = {
latitude: latitude,
longitude: longitude
};
});
$scope.zoom = 8;
});
您可以将coordenadas
功能放在service
。 在某些方面,服务就像“全局”函数的模块化包装器一样,无需使用全局函数(您可以将服务注入到您想要的任何控制器中。)
例如:
moduloMapa.service('coordenadas', function() {
return function(position) {
return {
latitude: position.coords.latitude,
longitude: position.coords.longitude
}
}
});
moduloMapa.controller('controlIndexMap',['coordenadas', function(coordenadas) {
var latitude = coordenadas(/* whatever position */).latitude;
// Now you've injected the 'coordenadas' service
// You can dynamically return a latitude/longitude (in the controller's -- not global -- scope)
}]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.