2014-10-01 4 views
0

У меня возникли некоторые странные проблемы, проходящие несколько параметров с помощью ui-routerНесколько PARAMS с использованием UI-маршрутизатора

Моих ui-sref выглядит следующим образом:

ui-sref="app.bins.view({binId:{{gridDisplayItem.id}},allowUpload:'{{gridDisplayItem.user_upload}}'})" 

если я осмотреть элемент, я вижу что-то вроде:

<a ui-sref="app.bins.view({binId:3,allowUpload:'No'})" href="#/app/bins/view/3"> 
    <i class="fa fa-folder-open" style="font-size:18px;color:green"></i> 
</a> 

поэтому правильное значение передается.

Когда я перехожу на app.bins.view, и я делаю console.log($stateParams.binId);, он показывает 3.

Если у меня есть console.log($stateParams.allowUpload);, я получаю undefined.

Если я делаю console.log($stateParams); я получаю Object {binId: "3"}

Согласно документации, я делаю это правильно: https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-sref

Что я здесь делаю неправильно?

+0

использовать «Нет» ... в противном случае он ищет переменную No ... – beauXjames

+0

Я все еще получаю 'undefined' с кавычками вокруг значения. Отредактировано мое сообщение, чтобы отразить одиночные кавычки – Ronnie

+0

, вы объявили оба своих параметра в своем маршруте? – beauXjames

ответ

1

Самое главное, что информация, содержащаяся в документации UI-маршрутизатор (https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service), чтобы понять, является следующая

$stateProvider.state('contacts.detail', { 
    url: '/contacts/:contactId', 
    controller: function($stateParams){ 
     $stateParams.contactId //*** Exists! ***// 
    } 
}).state('contacts.detail.subitem', { 
    url: '/item/:itemId', 
    controller: function($stateParams){ 
     $stateParams.contactId //*** Watch Out! DOESN'T EXIST!! ***// 
     $stateParams.itemId //*** Exists! ***// 
    } 
}) 

Вы должны быть уверены, объявлять параметры конфигурации поставщика.

Если целью вашего параметра allowUpload является то, что я думаю, не должно быть причин, по которым вы не можете использовать событие ng-click на своем href, чтобы иметь функцию, вызванную в вашем контроллере, которая затем использует $ state .go() для управления изменением вида. Просто передайте переменную контроллеру.

+0

Я определяю свои контроллеры в конфигурации как 'controller: 'ViewBinController'', но я понимаю это и я думаю, используя ng-click в сочетании с $ state.go будет отлично работать, спасибо – Ronnie

+0

круто ... примите ответ! – beauXjames

+0

Я все еще пытаюсь заставить его работать, lol не волнуйтесь, я не оставлю тебя на вешалке – Ronnie

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