我对 jquery/jqueryui 还很陌生,但我进步很快。我有很多重复的代码,一定有办法重构。
因此,例如,我定义了一大堆自动完成小部件,如下所示:
$( "#workOrderSearchCustomer" )
.autocomplete({
source: function( request, response ) {
$.getJSON( "/autocomplete/customers", {
term: acExtractLast( request.term )
}, response )
},
search: function() {
// custom minLength
var term = acExtractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = acSplit( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( ", " );
// update the search
searchAndReloadWorkorderTabs();
return false;
}
});
除了更改回调函数和自动完成内容的位置外,它们都使用相同的代码。在这种情况下,从小部件到小部件的变化只是“/autocomplete/customers”和 searchAndReloadWorkorderTabs()
我希望能够做类似的事情:
$( "#workOrderSearchCustomer" )
.autocomplete( initAutoComplete(
"autocomplete/customers",
searchAndReloadWorkorderTabs
));
并且让这个填充所有的方法只改变改变的两件事,所以我不必拥有所有这些重复的代码。解决这个问题的标准方法是什么?