우리가 만들고있는 각도 앱에 매우 이상한 문제가 있습니다. 아래에 정의 된 리소스 (예 : 빌드 할 수있는 간단한 예제)에서 데이터를로드 할 때마다 데이터 바인딩 (예 : ng-repeat = '메시지를 메시지로'또는 {{message.id}}로 사용할 수있는 데이터를 다시 가져옵니다.) 그러나 나는 그것을 배열이나 객체 (gether {{id : myId}) 또는 query()를 사용하는 wether에 따라 액세스하여 javascript에서 읽지 못한다.
반복을 통해 $ get, $ query, $ save 등의 키를 얻을 수 있지만 실제 데이터는 없습니다. 문제 (A)에서
app.factory('Message', ['$resource', function($resource) {
return $resource('MY_URL/messages/:id', {id: '@id'});
}]);
app.service('messageService', ['$rootScope', 'Message', function($rootScope, Message) {
var messages = Message.query();
var selectedMessage = null;
var service = {};
service.get = function(id) {
// Problem A (see below for details)
if (arguments.length === 1) return Message.get({id: id});
else return messages;
};
var MenuCtrl = function($scope, Project, messageService, otherService) {
$scope.projects = Project.query();
$scope.messages = messageService.get();
// Problem B (details below)
};
내가 그러나 내가 데이터가 준비되기 전에 일어날 통화를 처리 할 수있는 방법이 필요합니다, 하나의 요소가 이미 인출되었습니다 컬렉션을 형성 반환 할 수 있어야합니다.
문제 B에서 가져온 데이터 중 일부를 처리하고 "otherService"에 결과를 전달하고 싶습니다. 그러나 데이터 준비가 완료 될 때까지 지연시킬 방법이 필요합니다.
다음 API docs에 따르면
: 여기
어떤 상황과 예제 대답. 검색된 리소스를 어떻게 반복합니까? –
반복은 for (each) 루프를 사용한 테스트 일뿐입니다. 그러나 나는 할 수있을 것으로 기대할 것입니다 : 경고 (메시지 [1] .id) – martijnve
좋아, 여전히, 나는 당신이 동기 호출로 리소스에 대한 호출을 취급한다고 가정하고있어 정확한 코드를 볼 것이 좋습니다. 비동기입니다. 더 많은 정보는 여기에 있습니다 : http://stackoverflow.com/questions/11966252/how-does-the-resource-get-function-work-synchronously-in-angularjs/11966512#11966512 –