2016-04-27 120 views
-2

我有条件$stateParams$state,我正在尝试将$stateParams的值分配给paramId。我如何使用三元运算符来实现这个任务?如何使用itenary运算符?

commonCtrl.js

var paramId = $stateParams.processId:? $stateParams.assessmentId; 

config.js

.state('app.addPrcChallenge', { 
      url: '/add/prcChallenge/:processId/:assessmentId?', 
      templateUrl: 'views/process/processChallenge.html', 
      controller: 'ProcessChallengesCtrl', 
      data: { 
       authenticate: true 
      }, 
+2

附注 - 它被称为*三元*操作符 – Hacknightly

+0

附注 - 您不能放置:和?一起 – Redu

回答

2

你接近。试试这个:

var paramId = $stateParams.processId ? $stateParams.processId : $stateParams.assessmentId; 
+0

为什么我们分配'$ stateParams.processId'两次? – hussain

+0

@hussain - 它不会分配两次。 – RJM

+0

你可以用'||'来代替。 – evolutionxbox

1

不幸的是JavaScript不拥有一种null coalescing operator像C#中,但你可以做到几乎与此构筑体的相同效果:

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

基本上这意味着paramId将等于$stateParams.processId如果它有一些不同于undefined的值,否则等于$stateParams.assessmentId

+0

downvote的任何原因? –

+0

我看不到一个。我更喜欢你的答案。 – evolutionxbox