2014-12-04 33 views
0

我正在使用角度UI路由器來處理狀態轉換,並且我有一種狀態似乎無法正確解析。當可選參數提供時,角度UI路由器無法識別狀態

的狀態是:

.state('organization.program.editor', { 
    url: "/editor/{contentId:[0-9]{1,8}}/{workflowStateId:[0,9]{1,8}}/{projectId:[0,9]{1,8}}", 
    templateUrl: "editor-editor", 
    controller: 'EditorController as vm', 
    resolve: { 
     editorModel: ['$stateParams', 'editorService', 'orgService', 
      function ($stateParams, editorService, orgService) { 
       debugger; 
       //edited for brevity 
       return null; 

      }] 
    }, 
    params: { contentId: {}, orgId: {}, programId: {}, 
       workflowStateId: { value: '-1' }, projectId: { value: '-1' } } 
     }) 

如果我瀏覽到/editor/2445,過渡被接受,它成功地導航,我的可選參數的默認值,-1,-1。

但是,如果我嘗試/editor/2445/1/editor/2445/1/1,它不會識別該狀態。

我錯過了什麼?

+0

你有任何'organization.program.editor'子狀態嗎?例如'organization.program.editor.otherState'.. – DaniCE 2014-12-04 16:22:36

+0

@DaniCE,不,這個數字和目前一樣低。 – 2014-12-04 16:25:06

回答

1

好的,所以我解決了這個問題。問題是PARAMS定義:

params: { contentId: {}, orgId: {}, programId: {}, 
      workflowStateId: { value: '-1' }, projectId: { value: '-1' } } 

由於我使用像這樣的URL數字的限制:editor/{contentId:[0-9]{1,8}}/{workflowStateId:[0,9]{1,8}}/{projectId:[0,9]{1,8}},有兩個違規在我PARAM默認值。

首先,[0-9]{1,8}只會匹配數字值。其次,它只會匹配正數值。

因此,所提供的'-1'值在應用時將永遠不匹配。它需要是一個數字,0或更大。

希望它可以幫助未來的人。

相關問題