我在ui-router上有条件参数,因为我在应用程序的不同位置使用相同的屏幕。我必须编写逻辑来检查我分配给$stateParams
的{{1}}值。我尝试过paramId
和if
。
有没有更好的方法来完成这项任务?
else
答案 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;