У меня есть несколько функций, объявленных, что каждый из них вызывает вызов API. Каждая функция точно такая же в функции, и я пытаюсь реорганизовать их все в 1 функцию, чтобы сделать код более эффективным. Для рефакторированной функции я передаю соответствующую информацию, например. URL API, массив для хранения возвращенных данных JSON и т. Д. Функция выполняет запрос $ http и возвращает JSON.Назначение значения переменной, переданной функции как параметр
Образец JSON находится ниже.
[{
"options": [{
"id": "1",
"desc": "JCB"
}, {
"id": "2",
"desc": "Tractor"
}, {
"id": "3",
"desc": "Truck"
}]
}]
Сначала я инициализирую массив для хранения возвращаемого API JSON и последующего вызова функции. Вызов инициализации и функции выглядит следующим образом:
$scope.valuesAPIData = []; // Array to store API JSON
getAPIData("1234", "http://myAPI/getSomeValue.php?userid=", $scope.valuesAPIData, "options"); // Function call passing parameters
Я создаю функцию, и мой response.data из запроса $ HTTP возвращает данные в формате JSON. Проверка apiArray показывает apiArray содержит JSON [объект Object].
1. Однако, мне нужно установить мой инициализируется массив $ scope.valuesAPIData к apiArray. Но как установить $ scope.valuesAPIData = apiArray, не записывая его, поскольку переданные параметры будут меняться при каждом вызове. $ scope.valuesAPIData не установлен (пустой) в предупреждении() ниже.
2. Кроме того, когда я пытаюсь и запросить внутренний цикл Foreach с value.apiValue - возвращает неопределенную. Когда я жестко кодирую это как value.options Я могу получить доступ к параметрам, но проблема в том, что имя «параметры» будет изменяться в каждом вызове API - например. его можно называть доступом в некоторых вызовах API.
function getAPIData(userID, apiURL, apiArray, apiValue)
{
$http.get(apiURL + userID).then(function success(response)
{
apiArray = response.data; // apiArray = [object Object]
alert("$scope.valuesAPIData: " + $scope.valuesAPIData); // Nothing here (blank)
angular.forEach(apiArray, function (value, key)
{
angular.forEach(value.apiValue, function (v, k) // value.apiValue gets missed completely
{
alert("API Response Data - id: " + v.id);
alert("API Response Data - desc: " + v.desc);
});
});
},
function error(response)
{
var data = response.data;
alert("A error has occurred.");
});
}
Это проект AngularJS, пожалуйста, добавьте angularjs в качестве тега. Рамки могут влиять на правильный ответ. –