繁体   English   中英

如何将js变量传递给控制器​​angularjs

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM