我们正在使用Angularjs 1x而我试图在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)
}
}
}
}
))();
答案 0 :(得分:1)
以你的第二个例子为基础你可以做这样的事吗?
如果你可以提供更多信息,虽然这将是一个很大的帮助 - 为什么你不能正确地调用这个功能?你有任何错误吗?
Option Explicit
Public oldValue As Variant
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
oldValue = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oldColor
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
If Target.Value <> oldValue Then
oldColor = Target.Font.ColorIndex
Target.Characters(Len(oldValue) + 1, Len(Target) - Len(oldValue)).Font.ColorIndex = IIf(oldColor = 3, 5, 3)
End If
End If
End Sub