我正在构建的角度应用程序有一个非常奇怪的问题。每当我从如下定义的资源中加载一些数据时(我可以构建的最简单的示例),我都会返回一些数据,我可以将其用于数据绑定(例如 ng-repeat='message in messages' 或作为 {{message.id}} ) 但是我永远无法通过将其作为数组或对象访问来从 javascript 中读取它(取决于我使用 get({id:myId}) 还是 query())。
迭代它只会给我 $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)
};
在问题 A 中,我希望能够从已经获取的集合中返回单个元素,但是我需要一些方法来处理在数据准备好之前发生的调用。
在问题 B 我想处理一些获取的数据并将结果传递给“otherService”但是我需要一种方法来延迟这个直到数据准备好。