我有一个为我提供员工和部门的 RESTful API。在我的 AngularJS 应用程序中,我需要知道员工和员工所属的部门。我为此定义了两个工厂服务:
angular.module('myApp.services', [])
.factory('Employee', function ($resource) {
return $resource ('/api/employees/:id', { id: '@id' });
})
.factory('Department', function ($resource) {
return $resource ('/api/departments/:id', { id: '@id' });
})
;
在控制器中,我调用:
$scope.employee = Employee.get({id: 'me'});
接下来,我想调用:
$scope.departments = [];
angular.forEach($scope.employee.departmentIds, function (departmentId) {
$scope.departments.push(Department.get({ id: departmentId }));
});
但是$scope.employee
是一个promise对象,所以$scope.employee.departmentIds
只有在第一个请求完成时才会知道。
我可以这样解决它:
Employee.get({id: 'me'}).$promise.then(function (employee) {
$scope.employee = employee;
$scope.departments = [];
angular.forEach(employee.departmentIds, function (departmentId) {
$scope.departments.push(Department.get({ id: departmentId }));
});
});
问题是我在多个控制器中需要此信息,并且不想在每个控制器中重复此代码。所以我的问题是:有没有办法将这两种资源结合起来作为一种服务,既提供员工数据又提供该员工所属部门的数据?