我使用角度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 :(得分: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或更大。
希望将来帮助某人。