如何将Javascript列表发送到角度控制器

时间:2018-11-09 21:59:29

标签: javascript angularjs

我要实现的目标是从我的JavaScript函数发送一个邮政编码列表,该列表根据用户输入的距离和邮政编码来获取范围。一旦获得邮政编码列表,请将列表发送至我的角度控制器。

最初,以下范围将抓取用户从表单中输入的邮政编码(见下文):

$scope.GetCurrentZip = function (){
        try{
            $http.get("../remote/ReturnZipCodes.cfm")
                    .then(function(response){
                        $scope.searchParam.Zip = response.data;
                    })
            }
            else{ console.log('No geolocation'); }
        }
        catch(err) { console.log(err.message); }
    }

我想使用与上面相同的作用域。但是,我不想获取用户输入的值,而是想获取从函数中获取的列表。

以下是生成邮政编码列表的JavaScript函数:

   var rad = function(x) {
    return x * Math.PI / 180;
  };

  var getDistance = function(p1, p2) {
    var R = 6378137; // Earth’s mean radius in meter
    var dLat = rad(p2.lat - p1.lat);
    var dLong = rad(p2.lon - p1.lon);
    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
      Math.cos(rad(p1.lat)) * Math.cos(rad(p2.lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    var d = R * c;
    return d; // returns the distance in meter
  };

  function getZipCodes() {
        var miles = document.getElementById("miles").options[document.getElementById("miles").selectedIndex].innerHTML;
        var zip = document.getElementById("zip").value;
        if (typeof zip === 'undefined' || typeof miles === 'undefined' || !zip.length || !miles.length) return false;

    var zips = getZips();
        var zip_list = "";
    if (zips.length) {
      // var list_item = "";
      // for (i=0;i<zips.length;i++) {
      //   console.log(zips[i]);
      // }
            zip_list = zips.join();
    }
        return zip_list;
  }

  function getZips() {
    var zipcode1 = getZipInfo(zip);
    var res = [];

    if (typeof zipcode1 === "undefined") return false;
    for (i=0; i<zipinfo.length; i++) {
      var zipcode2 = zipinfo[i];
      var distance = getDistance(zipcode1, zipcode2);

      //Convert meters into miles
      distance = distance/1609.344;
      if (distance <= miles) {
        res.push(zipcode2.zip);
      }
    }
    return res;
  }

  function getZipInfo(zip) {
    for (i=0; i<zipinfo.length; i++) {
      if (zipinfo[i].zip == zip) return zipinfo[i];
    }
  }

任何帮助将不胜感激。

更新:如@charlietfl所述,我不清楚我在问什么,我对此表示歉意。

我要问的是我想检索在我的JavaScript函数GetZips()中生成的邮政编码列表。

如@charlietfl所建议(再次感谢您的帮助),我要做的只是以下内容:

    $scope.GetCurrentZip = function (){
        try{
                $scope.Zip = getZips();
            }
        catch(err) {}
    }

更新:@LSD指出,它不会将do传递给不在数组中的值。是否可以更改接受列表的范围?该列表是一个字符串。

1 个答案:

答案 0 :(得分:0)

下面的角度代码将为您提供隐藏值

var hidenctl = angular.element(document.querySelector('#hidenid'));
var hidenvalue = hidenctl.val();