Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何才能优化long if else到优化版本_Javascript_Angularjs - Fatal编程技术网

Javascript 我如何才能优化long if else到优化版本

Javascript 我如何才能优化long if else到优化版本,javascript,angularjs,Javascript,Angularjs,在下面的代码中,我根据ANDIN操作设置两个作用域变量的状态 根据键的不同,我调用相关的方法(两种方法的区别在于检查prop3 我觉得它有相当冗余的代码,但不确定如何优化它。 你知道如何用短代码实现我的目标吗 if(key =='White') _checktests1(); else _checktests2 (); var _checktests1 = function () { if ($scope.test.Prop1 == "one" && $

在下面的代码中,我根据ANDIN操作设置两个作用域变量的状态

根据键的不同,我调用相关的方法(两种方法的区别在于检查prop3

我觉得它有相当冗余的代码,但不确定如何优化它。 你知道如何用短代码实现我的目标吗

if(key =='White')
    _checktests1();
else
    _checktests2 ();

var _checktests1 = function () {
    if ($scope.test.Prop1 == "one" && $scope.test.Prop2 == "two")
        $scope.checkWhiteStatus = true;
    else
        $scope.checkWhiteStatus = false;

    if ($scope.test.Prop1 == "three" && $scope.test.Prop2 == "four" )
        $scope.checkGreenStatus = true;
    else
        $scope.checkGreenStatus = false;
}
var _checktests2 = function () {
    if ($scope.test.Prop1 == "one" && $scope.test.Prop2 == "two" && $scope.test.Prop3 == "five")
        $scope.checkWhiteStatus = true;
    else
        $scope.checkWhiteStatus = false;

    if ($scope.test.Prop1 == "three" && $scope.test.Prop2 == "four" $scope.test.Prop6 == "six")
        $scope.checkGreenStatus = true;
    else
        $scope.checkGreenStatus = false;
}
你可以做:

$scope.checkWhiteStatus = ($scope.test.Prop1 == "one" && $scope.test.Prop2 == "two" && (key =='White' || $scope.test.Prop3 == "five"));

$scope.checkGreenStatus = ($scope.test.Prop1 == "three" && $scope.test.Prop2 == "four" && (key =='White' || $scope.test.Prop6 == "six"));

您也可以执行
var t=$scope.test;
来保存更多的字母。@Thom-x,但有时$scope.test.Prop3在我的例子中为null。此外,我也尝试过这种方法,但问题是如果您将某个内容分配给Prop6,并且稍后您希望为null,那么它将失败。@immirza:不确定您引用的内容。任何地方都没有分配;以及此代码与问题中的代码完全相同。如果有问题,原始代码也会有问题。@Bergi,我的范围变量在分页加载时会用valies更新。因此,假设所有范围变量都有正确的值或null。然后
$scope.checkWhiteStatus
$scope.checkGreenStatus
=false.你想要什么?