使用三元运算符如何检查值是从哪个$ stateParams?

时间:2016-04-28 16:28:55

标签: javascript angularjs angular-ui-router

我在ui-router上有条件参数,因为我在应用程序的不同位置使用相同的屏幕。我必须编写逻辑来检查我分配给$stateParams的{​​{1}}值。我尝试过paramIdif

有没有更好的方法来完成这项任务?

else

3 个答案:

答案 0 :(得分:1)

考虑Null-Coalescing Operator

您应该能够使用the null coalescing operator in Javascript ||替换您的三元运算符,这基本上是一个逻辑“OR”语句:

// This will set it to processId (if available), otherwise assessmentId
var paramId = $stateParams.processId || $stateParams.assessmentId;

三元(如果你想要的话)

但是,如果您只是担心设置challengeTypeLkupCode属性,则可以使用以下内容,具体取决于是否存在processId

// Set your lookup type depending if processId exists or not
$scope.challengesDTO.challengeTypeLkupCode = ($stateParams.processId) ? 'RA_CHLNG_TYP_PRC' : 'RA_CHLNG_TYP_RSKASES';

出于可读性目的,您可能最好只使用初始代码中的if语句。

答案 1 :(得分:0)

对于上面提到的if else条件,你可以尝试 -

$scope.challengesDTO.challengeTypeLkupCode=$stateParams.processId?'RA_CHLNG_TYP_PRC':$stateParams.assessmentId?'RA_CHLNG_TYP_RSKASES':"Default value u want to give";

答案 2 :(得分:0)

第一部分采用逻辑OR ||

var paramId =  $stateParams.processId || $stateParams.assessmentId;

第二部分是嵌套的三元运算符?:,如果没有比较,则返回值本身。

$scope.challengesDTO.challengeTypeLkupCode = $stateParams.processId ?
    'RA_CHLNG_TYP_PRC' :
    $stateParams.assessmentId ?
        'RA_CHLNG_TYP_RSKASES' :
        $scope.challengesDTO.challengeTypeLkupCode;