javascript - 使用三元运算符如何检查值来自哪个 $stateParams?

标签 javascript angularjs angular-ui-router

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

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

$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/

相关文章:

javascript - Vue 2 - 动态获取计算的背景图像

javascript - 如何仅使用字符串访问 JavaScript 数组中的函数?

angularjs - Angular ui-router 多次实例化子 Controller

javascript - 检查 subview 是否重新加载; AngularJS,UI 路由器

javascript - 在 URL 更改时,在 Angular UI 中,我的子模板没有加载多个 View

javascript - ChartJS : Limit Y Axis to cut outlimit values

javascript - 是否可以在 Javascript 中将代码块分配给 switch case 两次?

php - AngularJS、PHP 和 Mysqli

javascript - 使用 groupBy 进行多次 ng-repeat

angularjs - AngularJS 中的网站 URL 验证