我有一个请求拦截器,它现在做两件事,将一个时刻对象转换为后端兼容字符串,并将true
或false
转换为1
或0
问题是,例如当转换布尔值时,控制器中的对象就是来自。
如何“复制”对象,因此请求中的对象与原始对象不同?
我已尝试_.assign()
,angular.copy()
并将其与JSON
进行转换。
拦截
app.factory('requestInterceptor', function () {
function walk(obj) {
_.keys(obj).forEach(key => {
if (moment.isMoment(obj[key])) {
// Do conversion
}
if (obj[key] === false || obj[key] === true) {
obj[key] = obj[key] ? 1 : 0;
}
if (_.isArray(obj[key]) || _.isObject(obj[key])) {
walk(obj[key]);
}
});
}
return {
request(request) {
if (request.data) {
// let data = JSON.stringify(request.data);
// request.data = JSON.parse(data);
walk(request.data);
}
return request;
},
requestError(request) {
return request;
}
};
});
答案 0 :(得分:0)
我认为您应该复制控制器中的对象并在请求中使用该副本而不是原始对象。
$scope.data = angular.copy($scope.formData);
$http.post(url, $scope.data)
.then(
function(response){
....
},
function(response){
....
}
);