Мне нужно передать 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>
Я поставил свои комментарии в ответ для лучшего объяснения.
Вы должны настроить структуру 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. Это может отличаться для вашего приложения, поэтому вы можете оставить хеши.
Я удалил путь проекта в моей конфигурации маршрута для простоты
Если это вообще не помогает, это может помочь, если вы предоставите живое представление своего приложения, поэтому я могу точно проверить, что не работает или что не так.
Here we have no params
и я не знаю, почему в мой URL добавляется # и выглядит так: /project/3#/
console.log($routeParams)
?Object {}
,,,