ngResource save()方法的回调的参数是什么

时间:2016-05-19 14:56:02

标签: javascript angularjs ngresource

我正在使用$ http到ngResource重构我的角度代码。

我以前在我的服务中有这样的代码:

svc.login = function(username, password) {
            return $http.post(apiEndpoint + 'authenticate', {
                username: username,
                password: password
            })
            .then(function(val) {
                console.log("user token:", val.data);
                svc.token = val.data;
            });
        };

打印的用户令牌将是一个jwt令牌。现在我尝试将代码重构为以下内容:

   svc.login = function(username, password) {
        svc.authenticateApi().post(apiEndpoint + 'authenticate', {
                    username: username,
                    password: password
                },
                function(val) {
                    console.log("user token:", val);
                    svc.token = val;
                },
                function(res) {
                    console.log("error:", res.status + " " + res.statusText);
                });

        };

但是,它不起作用,因为传递给第一个回调的参数val不再是令牌本身,而是包含如下字符串数组的对象:

enter image description here

处理post方法返回的数据的标准方法是什么? (在这种情况下,post定义与此资源上的save相同)

1 个答案:

答案 0 :(得分:1)

我认为问题来自transformRespose

  

transformResponse - {function(data,data,   headersGetter)| Array。} - transform   函数或这些函数的数组。转换函数需要   http响应主体和标头,并返回其转换   (通常反序列化)版本。默认情况下,transformResponse会   包含一个函数,用于检查响应是否看起来像JSON   使用angular.fromJson对其进行字符串和反序列化。为了防止这种情况   行为,将transformResponse设置为空数组:transformResponse:   []

尝试将您的回复转换为json:

transformResponse: function (data) {
        return { token: angular.fromJson(data) }