3

我正在尝试使用 获取请求的响应$resource,例如我有:

angular.module('app').factory('AuthResource', ['$resource', function($resource) {
    return {
        isAuthenticated : function() {
            return $resource('/api/v1/auth/authenticated').query();
        }
    }
}]);

然后在我的控制器中,我正在调用此服务并执行以下操作:

console.log(AuthResource.isAuthenticated());

这不会返回实际结果,它只是一个对象{'success' : 'true'}

相反,它返回:

Resource {$resolved: false, $then: function, $get: function, $save: function, $query: function…}
$resolved: true
$then: function (callback, errback) {
success: false
__proto__: Resource

如何获取实际返回的对象?我没有将它应用于任何模型,只是使用数据来确定一些路由。

谢谢!

4

3 回答 3

3

我设置了这样的测试:

var status = {};
$httpBackend.expectGET("/api/Accounts/AuthenticationStatus").respond(status);

然后我有一个期望:

expect(actual).toBe(status);

我收到以下错误:

Expected { $resolved : true, $then : Function } to be { }.

在摸索了很长时间之后,我终于意识到 get() 函数返回的对象永远不会与我设置 $httpBackend 服务来响应的对象完全相同,但它会返回基础对象{ $resolved : ..., $then : ... } 并在解决后将包含在我的响应对象中的附加字段添加到该对象。

希望这比以前的海报更有意义。

于 2013-05-16T03:06:53.200 回答
2

只需修改您的代码如下

angular.module('app').factory('AuthResource', ['$resource', function($resource) {
    return {
        isAuthenticated : function() {
            return $resource('/api/v1/auth/authenticated')
        }
    }
}]);

--controller 
AuthResource.isAuthenticated().query(function(data){
console.log(data);
});

当数据从服务器返回时,对象是资源类型的一个实例,所有非 GET 方法都可以使用 $ 前缀

于 2013-04-24T17:42:55.093 回答
0

您能否根据此处的答案https://stackoverflow.com/a/11856710/1371408提供解决方案。就像是:

AuthResource.isAuthenticated(
    {}, // params (ie. none)
    function (data) { // success callback
        // do what you want with values returned from successful request, contained in 'data'
    },
    function (error) {
        console.log(error); // Error details
    }
);
于 2013-10-10T23:33:38.037 回答