我正在将我的角度代码从使用$ 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不再是令牌本身,而是包含如下字符串数组的对象:

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

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

最佳答案

我认为问题来自transformRespose


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


尝试将您的响应转换为json:

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

关于javascript - ngResource save()方法的回调参数是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37326985/

10-12 13:00
查看更多