当提供可选参数时,Angular UI-Router无法识别状态

时间:2014-12-04 16:01:22

标签: angularjs angular-ui-router

我使用角度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,则无法识别该状态。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

好的,所以我解决了这个问题。问题是params的定义:

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

由于我在网址中使用了数字约束,因此:editor/{contentId:[0-9]{1,8}}/{workflowStateId:[0,9]{1,8}}/{projectId:[0,9]{1,8}},我的param默认值中存在两个违规行为。

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

因此,提供的'-1'值在应用时永远不会匹配。它必须是一个数字,0或更大。

希望将来帮助某人。