Как отправить список Javascript на угловой контроллер - PullRequest
0 голосов
/ 10 ноября 2018

То, чего я пытаюсь добиться, это отправить список почтовых индексов из моей функции 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 указало, что оно не будет передавать значения, которые передаются, не находятся в массиве. Можно ли изменить область, чтобы принять список? Список представляет собой строку.

1 Ответ

0 голосов
/ 21 ноября 2018

Ниже код угловой даст вам скрытое значение

var hidenctl = angular.element(document.querySelector('#hidenid'));
var hidenvalue = hidenctl.val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...