Как настроить маршруты AngularJS

0

Мне нужно передать id из project/id в CommentCtrl, когда я пытаюсь выполнить console.log($routeParams.id) он возвращает undefined... Любой может найти, что не так с моим кодом?

   .config(function($routeProvider) {
                    $routeProvider.
                            when('/project/:id', {
                                controller: 'CommentsCtrl'
                            }).
                            otherwise({
                                redirectTo: '/'
                            });
                })
              .controller('CommentsCtrl',function($scope,$http,$routeParams){
                  $scope.comments = [];
                  $scope.param = $routeParams.id;
              });

Обновить:

В html у меня просто есть модуль, CommentsCtrl и <div ng-view></div> внутри CommentsCtrl вот так:

<div ng-controller="CommentsCtrl">
  <div ng-view></div>
</div>
  • 0
    Каков результат, если вы console.log($routeParams) ?
  • 0
    Object {} ,,,
Показать ещё 8 комментариев
Теги:

1 ответ

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

Я поставил свои комментарии в ответ для лучшего объяснения.

Вы должны настроить структуру html таким образом:

<div>
  <div ng-view></div>
</div>

Удалите ng-контроллер, поскольку ngRoute назначает контроллер, как вы можете видеть в своей конфигурации:

[...]
  $routeProvider.
    when('/project/:id', {
        controller: 'CommentsCtrl'
    })

Тогда CommentCtrl получит параметр $ routeParams.id в качестве параметра.

Если вам нужен контроллер упаковки, вам придется определить другой, например, "AppCtrl" или что-то еще. Но он не должен соответствовать контроллеру, используемому с ngRoute.


Это самый простой пример, который я мог бы собрать для использования ngRoute: http://plnkr.co/edit/JSwafRF2AavvlWtsnjus?p=preview

Вы можете протестировать его в полноэкранном режиме, изменив URL. Я не мог получить ссылки на plnkr до сих пор

Обновить:

Есть некоторые вещи, которые следует упомянуть, учитывая мой пример кода:

  • С plunker я должен использовать хеши (#), потому что сервер не разрешает ссылки html5 style. Это может отличаться для вашего приложения, поэтому вы можете оставить хеши.

  • Я удалил путь проекта в моей конфигурации маршрута для простоты

Если это вообще не помогает, это может помочь, если вы предоставите живое представление своего приложения, поэтому я могу точно проверить, что не работает или что не так.

  • 0
    Я реализую это в своем коде, но проблема в том, что я всегда получаю. Here we have no params и я не знаю, почему в мой URL добавляется # и выглядит так: /project/3#/
  • 0
    Пожалуйста, посмотрите мой план снова, я только что добавил ссылки и контроллер упаковки. Может помогает
Показать ещё 3 комментария

Ещё вопросы

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