我试图将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;
答案 0 :(得分:1)
如果页面上存在变量,只要它们在正确的范围内定义,就应该能够毫无问题地使用它们。
意味着你应该做这样的事情:
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;
});
答案 1 :(得分:1)
您可以将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)
}]);