Angularjs 1xを使用していますが、Angularjsフィルタで重複したコードをリファクタリングしようとしていますが、問題を正しく解決できません。非常にシンプルでなければなりません。Angularjsのクロージャでコードをリファクタリングする方法はありますか?
私たちは、匿名の自己実行機能を使用するフィルタを使用するための標準的な構造を持っています。 forループで重複したコードを持つif/elseブロックがいくつかあり、その重複を排除する関数を作成したいと思っていましたが、関数を適切に呼び出すことができません。これをどうやってやりますか?
(function() {
//Named function
function abc(Input){
return function(value){
for(var i=0; i<3; i++){
if(w){
//Duplicate code here
} else if(x){
//Duplicate code here
} else if(y){
//Duplicate code here
} else if(z)
}
}
}
}
))();
ここでは、重複したコードと似ていますが、各ブロックにまったく同じ重複コードがあります。私たちはラベルを扱う特別なサービスを持っています。
if(Input[i].fpwInd === 'Y' && fpw.plan === 'State') {
fpwValues.push(weblService.returnLabel("yes", $rootScope.label));
break;
}else if(Input[i].fpwInd === 'N' && fpw.plan === 'Another State') {
fpwValues.push(weblService.returnLabel("no", $rootScope.label));
break;
}
これは働いていた最終的なコードのようなもの:
(function() {
var fwp = function(input, plan){
if(input == "value" && plan == "somevalue")
fpwValues.push(weblService.returnLabel("yes", $rootScope.label));
//rest of the if/else code here...
};
function abc(){
return function(value){
for(var i=0; i<3; i++){
if(w){
fwp(input, plan);
break;
} else if(x){
fwp(input, plan);
break;
} else if(y){
fwp(input, plan);
break;
} else if(z)
}
}
}
}
))();
重複したコードを表示できますか?それが外の範囲から何を取るか見ることは重要です。 –
@Jamesドミトリーは、あなたが私たちに本物のコードを示す必要があると言いました。あなたが書いているものについては、次のようにすることが可能です。(w || x || y || z){//複写コード} –
これは独自のものですが、私の編集内容に似たものを書いています。実際のコードを明らかにすることなく、十分な情報を提供してバランスを取っています。 –