UI-Router, я пытаюсь передать идентификатор в URL, но я ничего не получаю

0

Я пытаюсь передать идентификатор в URL-адресе, чтобы его можно было использовать другой страницей, более конкретно, с подробной страницей, но я ничего не теряю. URL-адрес идет по правильному маршруту, но идентификатор не проходит. Я понятия не имею, что я делаю неправильно.

здесь мой файл app.js:

$stateProvider.state('contact', {

    url: '/contact',

    templateUrl: 'templates/contact.html',
    controller: 'mainController'

});

$stateProvider.state('contact.detail', {

    url: '/detail/:id',

    templateUrl: 'templates/contact.detail.html',
    controller: 'detailController'
});

и вот мой файл контроллера:

myApp.controller('detailController', ['$scope', '$stateParams', 
  function ($scope, $stateParams) {

    'use strict';

    $scope.peoples = $scope.peoples[$stateParams.id];


}]);

и вот мой контактный файл:

<div class="container">
<div class="row">
    <div class="col-md-6">
        <table class="table table-striped">
            <thead>
                <th>First name</th>
                <th>Last name</th>
                <th>Age</th>
            </thead>
            <tbody>
                <tr ng-repeat="person in peoples">
                    <td><a ui-sref="contact.detail({id: person.id})">{{person.firstname}}</a></td>
                    <td>{{person.lastname}}</td>
                    <td>{{person.age}}</td>
                </tr>
            </tbody>
        </table>
    </div>
    <div class="col-md-6">
        <div ui-view></div>
    </div>
</div>

  • 0
    Есть ли у вас значение в peoples массива , когда он достигает деталь контроллер? $scope.peoples ? Попробуйте сделать alert( $stateParams.id) в подробном контроллере в качестве первой строки.
  • 0
    Вы подтвердили, что ничего не передается в $stateParams - возможно, сделайте console.log($stateParams) in your controller and call the url directly as in ' localhost: ... / detail / foo `?,
Теги:
angular-ui-router
angular-ui
state

1 ответ

2

Существует рабочий пример

Одно дело:

поиск с помощью индексатора, например $scope.peoples[someIdValue] не будет $scope.peoples[someIdValue] по идентификатору, а по позиции (индексу)

Второй момент:

не переустанавливайте ссылку $ scope.peoples с новым значением (и теряете эту ссылку)

Итак, это должно быть исправление (использование lodash для поиска человека)

.controller('detailController', ['$scope', '$stateParams', 
   function($scope, $stateParams) {

      //$scope.peoples = $scope.peoples[$stateParams.id];
      $scope.person = _.find($scope.peoples, {id: $stateParams.id});

  }])

Проверьте, что все в действии здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню