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