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