저는 angular.js를 처음 사용하고 있으며 $http.get
및 $http.post
과 같은 $ http 함수를 사용하는 방법을 이해하려고합니다.
Java Rest 서비스를 통해 MySQL 데이터베이스에서 메시지를 검색하는 매우 간단한 앱이 있습니다. 내가 볼
function MessageController($scope, $http) {
$scope.getAll = function(callback) {
$http.get('/messages').success(function(response) { callback(response); });
}
$scope.messages = $scope.getAll(function(data) { return JSON.stringify(data); });
}
:
<div ng-controller="MessageController">
<ul>
<li ng-repeat="m in messages">{{m.content}}</li>
</ul>
</div>
그리고 내 컨트롤러가 같은 외모 : 나는 NG 반복과 같이 사용하여 목록을 시도하고
[
{id:1, content:"Hello World!"},
{id:2, content:"Testing 1, 2, 3..."},
{id:3, content:"I am from the database"}
]
: 데이터는 같은 외모를 반환 호출은 메시지 객체의 배열을 제대로 리턴하고 콜백 함수 내에서 콘솔로 출력 할 수 있지만 어떤 이유인지 그들은 ng-repeat
에 표시되지 않습니다. 수동으로 메시지 목록을 만들 때이 기능을 사용할 수 있었지만 $http.get
조각을 도입하면 작동이 중지되었습니다.
내가 누락 된 항목이 있습니까?
편집 : 난 당신이 코드가 작동하지만 다음과 같은 작업을해야되지 왜 왔는지 모르겠어요 angular.js 버전 1.2.19
응답을'console.log' 해 보셨습니까? 보통 데이터는'$ http' 콜백에서'response' 객체의'data' 속성에 있습니다. '콜백 (응답)'을'콜백 (응답 데이터)'으로 변경해보십시오. – KhalilRavanna
@KhalilRavanna get 함수에서 ... log.log (response); 콜백 (응답); ... '그리고 위에서 언급 한 JSON 배열이 출력된다. 'response.data'를 시도했을 때'undefined'를 출력했습니다. – feenz
그렇게 간단 할 것이라고 생각했습니다. 아래의 답변과 같이 보입니다. '$ scope.getAll' 함수가 실제로 아무 것도 반환하지 않기 때문에 업데이트하지 않습니다. $ scope.messages 자체를 업데이트하거나 $ scope.getAll'이'$ http.get'을 리턴하게하고 success 콜백의 내부에서'callback (response)'를 리턴 할 수 있습니다. 그런 식으로'$ scope.getAll' 메소드는 평가 된 콜백으로 해결할 약속을 반환합니다. 그게 효과가 있다고 생각합니다. '$ resource'도 작동하지만 나는 그 서비스를 싫어합니다. – KhalilRavanna