2016-04-27 35 views
0

我想將可選$stateParams添加到$state以下,可以說目前我有processId,並且我想添加assessmentId作爲可選params。我的目標是從應用程序中的兩個地方啓動相同的模板和控制器,它將基於$stateParams啓動。

我該如何實現該任務? app.js

加入挑戰

.state('app.addPrcChallenge', { 
      url: '/add/prcChallenge', 
      params: { processId: null,assessmentId:null}, 
      templateUrl: 'views/process/processChallenge.html', 
      controller: 'ProcessChallengesCtrl', 
      data: { 
       authenticate: true 
      }, 
      resolve: { 
      existingChallenge: function(){ 
        return null; 
       }, 

編輯挑戰

.state('app.editPrcChallenge', { 
      url: '/edit/prcChallenge/:challengeKey/processId?/:assessmentId?', 
      templateUrl: 'views/process/processChallenge.html', 
      controller: 'ProcessChallengesCtrl', 
      data: { 
       authenticate: true 
      }, 

回答

1

直接提到他們的網址與?後綴爲可選參數:

.state('app.addPrcChallenge', { 
    url: '/add/prcChallenge/:processId/:assessmentId?', 
    templateUrl: 'views/process/processChallenge.html', 
    controller: 'ProcessChallengesCtrl', 
    data: { 
    authenticate: true 
    }, 
    resolve: { 
    existingChallenge: function(){ 
     return null; 
    } 
    } 
}); 

可以忽略這種變化後的params屬性,如params屬性是用來定義不顯示爲URL的一部分PARAMS

+0

編輯屏幕如何,我需要三個'params',其中兩個參數將是可選的我添加編輯'$狀態'的問題。 – hussain

+0

它會工作。您可以根據需要添加任意數量 –

+0

processId編輯時未定義? – hussain

0

您URL屬性應該是這樣的:

.state('app.addPrcChallenge', { 
      url: '/add/prcChallenge/:processId/:assessmentId?', 
      templateUrl: 'views/process/processChallenge.html', 
      controller: 'ProcessChallengesCtrl', 
      data: { 
       authenticate: true 
      }, 
      resolve: { 
      existingChallenge: function(){ 
        return null; 
       }, 
+0

如果我指定的網址參數,我還需要' params:{processId:null,assessmentId:null}'? – hussain

+0

那你就不需要那個了,它提供了參數的默認值 –

+0

我編輯和添加了?到第一個參數,這意味着它是可選的 –

相關問題