2014-12-04 2 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

У вас есть дочернее состояние организации.program.editor? например, «organization.program.editor.otherState» .. – DaniCE

+0

@ DaniCE, нет, это так же низко, как сейчас. –

ответ

1

Хорошо, поэтому я решил это. Проблема заключается в определении Титулов:

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 или больше.

Надеюсь, что это поможет кому-то в будущем.