【发布时间】:2018-03-15 22:24:00
【问题描述】:
我有这样的工作代码:
服务(工厂?):
myApp.factory('MyService', ['$q','$resource', 'MyResource',
function ($q, $resource, MyResource) {
return {
getRoles: function () {
return MyResource.getRoles(); //MyResource makes API calls using $resource
} } });
控制器:
$scope.Roles = MyService.getRoles();
$scope.Roles.$promise.then(function () { $scope.RolesCount = $scope.Roles.length; });
我想做的是在 MyService 中创建这样的函数,一旦 getRoles 被解析,它将返回角色数量,这样我就可以像这样在控制器中使用它:
$scope.RolesCount = MyService.getRolesCount();
然后在html中
{{RolesCount}}
不幸的是,我不知道该怎么做,因为我的 getRolesCount() 方法需要返回一些东西,所以我不能在 MyService 中使用 $promise.then()。一旦我想出更准确的内容,我会尝试更新我的问题标题。
【问题讨论】:
-
您应该使用
actions选项重新定义getRoles 操作并提供像这样的transformResponse。 -
是的,但这听起来像是在资源/存储库层上进行操作。如果我想在服务层处理返回的数据(这不是它的用途吗?)然后将结果返回给控制器(作为对象引用与 $resource 相同的方式)怎么办?
-
是的,一个服务比较合适的地方。但在您的情况下,这些方法都不起作用,因为
then不仅会转换响应,还会解开其值。此外,您实际上并不需要使用资源来执行此操作。
标签: angularjs angular-promise ngresource angularjs-ng-resource