我在 ui-router 上有条件参数,因为我在应用程序的不同位置使用相同的屏幕。我必须编写逻辑来检查我分配给 paramId
的 $stateParams
值。我尝试过使用 if
和 else
。
是否有更好的方法来完成这项任务?
$scope.challengesDTO = {
challengeTypeLkupCode: 'RA_CHLNG_TYP_PRC'
};
var paramId = $stateParams.processId ? $stateParams.processId : $stateParams.assessmentId;
if ($stateParams.processId) {
$scope.challengesDTO.challengeTypeLkupCode = 'RA_CHLNG_TYP_PRC'
} else if ($stateParams.assessmentId) {
$scope.challengesDTO.challengeTypeLkupCode = 'RA_CHLNG_TYP_RSKASES'
}
最佳答案
考虑空合并运算符
您应该能够将三元运算符替换为 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 语句。
关于javascript - 使用三元运算符如何检查值来自哪个 $stateParams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920444/