Я новичок в AngularJS. Я пытаюсь получить firstname, lastname & State из API, используя функцию поиска для кода состояния, например, "DC" для ex.
Я изменил, чтобы быть проще, и я все еще не вижу результата на странице:
Вот мой вопрос:
function ItemsController($scope, $http){
$http.get("https://my.ncarb.org/Public/api/certification/search?statecode=dc")
.success(function(data, status, headers, config){
$scope.items = data;
});
}
Здесь образец моего api:
{
"data": [
{
"id": "14e1047c-b811-40f7-8a21-780ae5edf1ed",
"firstName": "Kent",
"lastName": "Abraham",
"city": "WASHINGTON",
"stateCode": "DC",
"countryCode": "USA"
},]
}
и вот мой HTML:
<body ng-controller="ItemsController">
<h1>jSON Data</h1>
<table>
<tr ng-repeat="item in items">
<td>{{item.id}}</td>
<td>{{item.firstName}}</td>
<td>{{item.stateCode}}</td>
</tr>
</table>
</body>
Но мой вывод, после проверки, получить статус 200 OK, но ничего не отображается на странице... Любая причина?
Прикрепленное изображение - Скриншот ответа в инструментах Dev
Ты делаешь это неправильно. $http.get
возвращает обещание.
Вот рабочий образец.
HTML:
<div ng-app="app">
<div ng-controller="ItemsController">
<h1>jSON Data</h1>
<table>
<tr ng-repeat="item in items">
<td>{{item.id}}</td>
<td>{{item.firstName}}</td>
<td>{{item.stateCode}}</td>
</tr>
</table>
</div>
</div>
Угловое приложение и контроллер:
var module = angular.module('app', []);
angular.module('app').controller('ItemsController', ['$scope', '$http', function ($scope, $http) {
$http.get('https://my.ncarb.org/Public/api/certification/search?statecode=dc').then(function (response) {
// this callback will be called asynchronously
// when the response is available
$scope.items = response.data.data;
}, function (response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
}]);
Вывод:
.then()
касается .then()
, я рекомендую вам прочитать docs.angularjs.org/api/ng/service/$q
данные являются полным ответом от api.
Просто делать:
$http.get("https://my.ncarb.org/Public/api/certification/search?statecode=dc")
.success(function(data, status, headers, config){
$scope.items = data.data;
});
Это решит вашу проблему :)
Почему вы делаете второй $ http.get()? Если первый возвращает образец api, это бесполезно, потому что вы должны передать что-то, возвращающее ответ в параметре вашего $ http.get()
Возможно, вы должны сделать $ scope.states = response.data сразу после вызова вашего API.
$http.get($scope.state.statecode) .then(onStates);
имел ввиду? это будет делать правильный вызов AJAX?