создание маршрута Param с помощью ui-router

0

Я не могу настроить и сохранить параметр маршрута. Когда я устанавливаю параметр. Он подходит к правильному месту. Однако, если я изменю маршрут, содержимое не изменится. Я попытался создать один объект вида, но состояние home.name не оказывает такого подхода. Я могу только получить шаблоны, чтобы показать, используя два абсолютных пути.

Could not resolve '#/home/Adam Harvey' from state 'home'

Я нашел отличную ссылку https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service

Для начала: я создал простой список с ng-repeat. Вот укороченный пример

$scope.iterants =  
   [
       {
        name: 'Adam Harvey',
        type: 'Hotel',
        dates: '01/21/2015-01/22/2015',
        location: 'Rockville Maryland',
        status: 'Confirmed'
        },
        {
        name: 'Jana Harvey',
        type: 'Hotel',
        dates: '01/21/2015-01/22/2015',
        location: 'Rockville Maryland',
        status: 'Confirmed'
        }
    ];

В моем html-шаблоне я хочу разместить ui-sref поверх имени каждого человека в качестве ссылки, чтобы просмотреть их на другом шаблоне.

          <td><a ui-sref="itinerary.name{{name:person.details}}">{{person.name}}</a></td>

В моей конфигурации я настраивался так, чтобы контроллер получал $ stateParams

  .config(function config( $stateProvider ) {
  $stateProvider.state( 'home.name', {
    url: '/home/:name',
    views: {
      "main": {
        controller: 'AboutCtrl',
        templateUrl: 'src/app/about/about.tpl.html'
      }
    },
      data: {pageTitle:'About'}
  });
})

.controller( 'AboutCtrl', function AboutCtrl( $scope, $stateParams ) {
  $stateParams.name;
});

В домашнем контроллере. Я настроил свою конфигурацию и контроллер так...

.config(function config( $stateProvider ) {
  $stateProvider.state( 'home', {
    url: '/home',
    views: {
      "main@": {
        controller: 'HomeCtrl',
        templateUrl: 'src/app/home/home.tpl.html'
      },
        resolve: [{
            name: ['$stateParams', function($stateParams){
                return $stateParams.name;
            }]
        }]
    },
    data:{ pageTitle: 'Home' }
  });
})

Обновления

  • 0
    Разве имя не должно быть разрешено в home.name вместо home? Кроме того, я считаю, что разрешение принимает объект, а не массив.
Теги:
angular-ui-router

1 ответ

1
Лучший ответ

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

<td><a ui-sref="home.name({ name: person.name })">{{person.name}}</a></td>
  • 0
    Огромное спасибо. Я просто прочитал это снова на документах. Тем не менее, как вы получаете доступ к шаблону? Я получаю изменение параметров. Я наложил на ребенка решение, но оно не отправляет меня в templateUrl home.name.
  • 0
    Трудно сказать, не видя остальную часть вашего кода. Ваше состояние home.name размещает свой вид внутри пользовательского интерфейса с именем main в домашнем представлении. Я предполагаю, что вы подразумевали ссылку на main в корневом шаблоне, так что «main» на самом деле должно быть «main @». github.com/angular-ui/ui-router/wiki/...
Показать ещё 2 комментария

Ещё вопросы

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