我有一個非常奇怪的問題,我們正在構建一個角度應用程序。每當我從下面定義的資源(我可以構建的最簡單的例子)中加載一些數據時,我會返回一些數據以供我用於數據綁定(例如,ng-repeat ='message in message'或者{{message.id}} )但是我永遠不能通過將它作爲一個數組或對象(取決於我使用get({id:myId})或query())來從javascript讀取它。
對它進行迭代只會給我諸如$ get,$ query,$ save等的密鑰......但是沒有實際的數據。
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」,但是我需要一種方法來延遲這種情況,直到數據準備就緒。
你沒有告訴你如何去從JavaScript訪問這些資源,所以它是一個有點難以回答。如何迭代檢索的資源? –
迭代只是一個for(每個)循環的測試。然而,我期望能夠: 警報(消息[1] .id) – martijnve
好的,但仍然會很高興看到確切的代碼,因爲我假設您將對Resource的調用視爲同步調用,而那些是異步的。更多信息在這裏:http://stackoverflow.com/questions/11966252/how-does-the-resource-get-function-work-synchronously-in-angularjs/11966512#11966512 –