2016-02-24 2 views
2

Я не могу много часов понять, что не так с моим кодом. $ stateParams.id всегда не определено. Это мой контроллер:

.controller('ordersCtrl', [ 
    '$scope', 
    '$http', 
    '$stateParams', 
    'orders', 
    'meals', 
    function($scope, $http, $stateParams, orders, meals){ 
     console.log($stateParams.id); 
    ... 
}]) 

Мое состояние:

.state('orders/{id}', { 
    url: '/orders', 
    templateUrl: '/orders.html', 
    controller: 'ordersCtrl' 
}) 

И моя ссылка:

<a href="#/orders/{{$index}}">Order</a> 

Что не так с этим?

+0

Использование индекса для идентификатора не очень практично. Удалите или добавьте только один элемент в любом месте в массиве, отличном от конца, и закладок уничтожен. – charlietfl

+0

, так что я могу сделать, когда у меня есть только одно состояние? – myf

+1

использовать уникальные идентификаторы, которые никогда не меняются – charlietfl

ответ

5

Ваше состояние следует читать:

.state('orders_view', { 
    url: '/orders/:id', 
    templateUrl: '/orders.html', 
    controller: 'ordersCtrl' 
}) 

Первый параметр state() это просто ярлык. Он не заботится о параметрах. Это зарезервировано для url.

Кроме того, правильная форма связи является:

<a href ui-sref="orders_view({id: $index})">Order</a> 
+1

Спасибо большое! – myf

0

Я думаю, что синтаксис может быть различным для параметра. Вы можете попробовать изменить код так:

.state('orders/:id', { 
    url: '/orders', 
    templateUrl: '/orders.html', 
    controller: 'ordersCtrl' 
}) 

я надеюсь, что это поможет вам

+0

Это не работает, потому что вы пытаетесь установить $ StateParam на имя состояния. – samura

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