2015-05-06 2 views
0

Я пытаюсь передать различные длины значений в то же состояние:Angularjs прохождения различных значений длины, как stateParams

Например

<li href="#/app/list/value1"> 

<li href="#/app/list/value1/value2"> 

В моем состоянии я следующий

.state('app.list', { 
    url: "/list/:passedLow/:passedHigh", 
    views: { 
    'menuContent': { 
     templateUrl: "templates/file.html", 
     controller: 'ValueListCtrl' 
    } 
    } 
}) 

Также у меня есть

$urlRouterProvider.otherwise('/app/landing'); 

поэтому, когда я нажимаю на вторую ссылку (т. Е. Передаю два значения) все работает нормально. Но когда я передаю один с единственным значением «в противном случае», он переадресовывает меня на целевую страницу.

Так как я могу передать значения переменной длины как $stateParams?

+0

I надеюсь, что вы найдете здесь ответ [присвоение нескольких названий маршрутов] [1] [1]: http://stackoverflow.com/questions/19516771/state-go-toparams-not-passed-to-stateparams – forgottofly

+0

посмотреть в документах ... можно использовать подстановочные знаки, так что если параметр не является там он игнорирует это – charlietfl

ответ

0

Существует a working plunker

Решение здесь заключается в использовании params: {} определить более подробную информацию о нашем параметре:

params : { passedHigh : { value : null, squash : true } }, 

Что мы можем видеть, что мы поручаем UI-маршрутизатор ожидать, что будет param прошлоHigh. Значение по умолчанию равно null (может быть скорректировано). И мы говорим, что он будет пропущен (если по умолчанию) в URL - squash: true

Doc: $stateProvider

Существует полное определение состояния

.state('app', { 
    url: "/app", 
    templateUrl: 'tpl.html', 
}) 
.state('app.list', { 
    url: "/list/:passedLow/:passedHigh", 
    views: { 
     'menuContent': { 
      templateUrl: "templates/file.html", 
      controller: 'ValueListCtrl' 
     } 
    }, 
    params: { 
     passedHigh: { 
      value: null, 
      squash: true 
     } 
    }, 
}) 
.state('app.landing', { 
    url: "/landing", 
    templateUrl: 'tpl.html', 
}) 

проверить его here in action

Смежные вопросы