私は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
));
そして、これをすべてのメソッドに入力して、変更する2つのことだけを変更するようにします。したがって、この重複したコードをすべて用意する必要はありません。これを解決する標準的な方法は何ですか?