#angularjs #json #ionic-framework
#angularjs #json #ionic-framework
Вопрос:
В моем приложении я пытаюсь извлечь массив json из базы данных с помощью $http.get
, при выполнении я не могу увидеть выбранные данные в моем представлении. Но в консоли моего браузера я могу увидеть ответ, показывающий количество массивов json data:array[5]
при расширении каждого массива, чтобы увидеть введенные значения в массиве. Итак, как я могу отобразить данные, полученные на моей странице просмотра.
var brandList=[];
var successCallBack=function(response){
$log.info(response);
brandList=response;
};
var errorCallBack=function(response)
{
$log.info(response);
};
$http({
method:'get',
url:'http://local-serve:8081/route/listMake'})
.then(successCallBack,errorCallBack);
return brandList;
}]);
Комментарии:
1. вы должны привязать вас
brandList
к какому-либо элементу (eqdiv
)2. Я использую http.get внутри сервиса и назначаю brandlist корневой области в контроллере, чтобы view мог иметь доступ к корневой области для json. @Michael
3. Если вы присваиваете значение, которое возвращаете после
$http
вызова: тогда оно всегда пустое, потому что$http
выполняется асинхронно. Фактическое значение присутствует только внутриsuccessCallBack
функции
Ответ №1:
Ответ во всем объекте response. вам нужно извлечь из него значение. Попробуйте запустить этот URL в браузере. Теперь, используя тот же URL, вот пример:
В JS,
$http.get('https://jsonplaceholder.typicode.com/photos/1')
.then(function(response){
$scope.title = response.data.title;
})
И в HTML,
<p>
The title is <i>{{title}}</i>
</p>
Ответ №2:
Проверьте фрагмент ниже..
function myCtrl($scope, $http) {
$http.get('http://www.w3schools.com/angular/customers.php')
.then(function(response){
$scope.names = response.data.records;
})
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="myCtrl">
<ul>
<li ng-repeat="x in names">{{x.Country}}</li>
</ul>
</div>
Ответ №3:
при использовании методов $ http имейте в виду, что все они асинхронны, поэтому вы должны сделать что-то вроде этого:
function dataService ($http, $q) {
return {
getAll: getAll
}
function getAll () {
var defered = $q.defer();
var promise = defered.promise;
$http.get('my-url')
.success(function(data) {
defered.resolve(data);
})
.error(function(err) {
defered.reject(err)
});
return promise;
}
}
Теперь вы можете обрабатывать результат по своему усмотрению:
function myController (dataService) {
dataService
.getAll()
.then(function(data) {
$scope.elementos = data;
})
.catch(function(err)) {
//Error
}
}