我有这样的服务:
(function() {
'use strict';
angular
.module('app.bookmark')
.factory('bookmarkService', bookmarkService);
function bookmarkService($http){
var url = 'api/bookmark';
bookmarkService.update = function(bookmark){
return $http.put(url + '/' + bookmark.id, bookmark);
};
return bookmarkService;
}})();
我想拦截方法PUT上的请求,发送没有ID属性的有效负载,因为我已经拥有了URL的属性。
我创建了这些功能:
function httpInterceptor($q) {
return {
request : function(config) {
if(config.method === 'PUT'){
delete config.data.id;
}
return config || $q.when(config);
}
};
}
问题是在屏幕(表单)上删除了 id 属性。假设用户想要永远保持多次改变同一记录数据的情况。
答案 0 :(得分:1)
制作配置数据的副本,而不是更改原始对象。
function httpInterceptor($q) {
return {
request : function(config) {
config = angular.copy(config);
if(config.method === 'PUT'){
delete config.data.id;
}
return config || $q.when(config);
}
};
}