一个简单的问题,如何避免在执行http帖子和放置相同表单时重复代码。
说:
// Post new form
function postForm(form){
var data = {
name: form.name
lastName: form.lastName
}
return api.post('jobs', undefined, JSON.stringify(data), 'application/json');
}
// Put save/edit existing (data)
function putForm(form){
var data = {
name: form.name
lastName: form.lastName
}
return api.put('jobs', undefined, JSON.stringify(data), 'application/json');
}
我的尝试,但后来我无法访问函数表单参数。
var data = {
name: name
lastName: lastName
}
// Post new form
function postForm(form){
return api.post('jobs', undefined, JSON.stringify(data), 'application/json');
}
// Put save edit form
function postForm(form){
return api.put('jobs', undefined, JSON.stringify(data), 'application/json');
}
不确定我是否在这里有意义,但希望有人会得到我想要做的事情。基本上我不想在调用api post或put时复制var数据。
答案 0 :(得分:2)
也许使用规范化辅助函数?
// Post new form
function postForm(form){
return $http.post('api', extractData(form));
}
// Put save/edit existing (data)
function putForm(form){
return $http.put('api', extractData(form));
}
// private helper
function extractData(data){
return JSON.stringify({
name: data.name,
lastName: data.lastName
});
}
当然,如果每个实现需要细微更改,可以向规范化程序添加一些配置。
答案 1 :(得分:0)
没有测试过,但这可能适合你
function postForm(form, method){
var data = {
name: form.name
lastName: form.lastName
};
return $http({
url: 'api',
method: method,
data: data
});
}
答案 2 :(得分:0)
你有两个功能实现,两者之间唯一不同的是使用的http函数。
在javascript中,函数是第一类对象,因此您可以将http函数作为参数传递..
function send(form, httpMethod) {
var data = {
name: form.name
lastName: form.lastName
};
return httpMethod.apply($http, [
'jobs',
undefined,
JSON.stringify(data),
'application/json'
]);
}
// Post new form
function postForm(form) {
send(form, $http.post);
}
// Put save edit form
function putForm(form) {
send(form, $http.put);
}
有必要通过apply
调用该方法,而不是简单地调用httpMethod('api', data);
,因为这些方法可能依赖挂在this
指针上的字段。