簡體   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