Javascript 如何更改自动完成';数据';没有这么多重复代码的参数?
我试图在我的Javascript 如何更改自动完成';数据';没有这么多重复代码的参数?,javascript,jquery,refactoring,jquery-autocomplete,Javascript,Jquery,Refactoring,Jquery Autocomplete,我试图在我的数据参数中为自动完成发送不同的值,具体取决于先前设置的全局变量lookupType 但是,所有其他代码都会重复,即使只有数据部分不同 如何减少冗余代码 在一种情况下,数据部分如下: data: { type: "full", location: "local", name: request.term }, 而在另一种情况下是这样的: data: { append: "no", d
数据
参数中为自动完成发送不同的值,具体取决于先前设置的全局变量lookupType
但是,所有其他代码都会重复,即使只有数据
部分不同
如何减少冗余代码
在一种情况下,数据
部分如下:
data: {
type: "full",
location: "local",
name: request.term
},
而在另一种情况下是这样的:
data: {
append: "no",
doPreprocess: true,
name: request.term,
maxResults: 1000
},
完整代码如下:
$( "#lookup" ).autocomplete({
if($("#hiddenLookupType").val() == "order")
{
source: function( request, response ) {
$.ajax({
url: lookupUrl,
dataType: "jsonp",
data: {
type: "full",
location: "local",
name: request.term
},
success: function( data ) {
// do something
}));
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
}
else if($("#hiddenLookupType").val() == "inventory")
{
source: function( request, response ) {
$.ajax({
url: lookupUrl,
dataType: "jsonp",
data: {
append: "no",
doPreprocess: true,
name: request.term,
maxResults: 1000
},
success: function( data ) {
// do something
}));
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
}
});
而不是:
data: {
type: "full",
location: "local",
name: request.term
},
拥有:
data: GetData(this),
function GetData(el)
{
..Logic Here
}
//calling it:
var parameters = {
type: "full",
location: "local",
name: request.term
}
test(parameters);
//the method
function test(dataList){
$( "#lookup" ).autocomplete({
if($("#hiddenLookupType").val() == "order")
{
source: function( request, response ) {
$.ajax({
url: lookupUrl,
dataType: "jsonp",
data: dataList,
success: function( data ) {
// do something
}));
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
}
else if($("#hiddenLookupType").val() == "inventory")
{
source: function( request, response ) {
$.ajax({
url: lookupUrl,
dataType: "jsonp",
data: {
append: "no",
doPreprocess: true,
name: request.term,
maxResults: 1000
},
success: function( data ) {
// do something
}));
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
}
});
}