将变量从 Angular 中的路由传递到控制器

Pass variables into controller from route in Angular

我正在尝试使用 Angular 路由来控制视图。除了设置模板和控制器外,我还想将一个变量传递给控制器​​,以便它加载适当的 JSON 内容。

这是我当前的路线代码...

 app.config(['$routeProvider',
   function ($routeProvider) {
       $routeProvider.
         when('/forum/:forumID', {
             templateUrl: '/AngularTemplates/forumListing.html',
             controller: 'forumViewFullList'
         }).
         when('/thread/:threadID', {
             templateUrl: '/AngularTemplates/thread.html',
             controller: 'forumThread'
         }).
         otherwise({
             templateUrl: 'blah',
             controller: 'blah'
         }
            
         );
   }]);

而且这是控制器,不是 HTTP 请求末尾的变量...

app.controller('forumViewFullList', function ($scope, $http, $timeout) {

     function loadSell() {
         $http.get("/umbraco/api/openzone/GetMessages?pageSize=50&pageNumber=1&forumId="+forumID)
         .then(function (response) {

            /// do something

         });
     }

     loadSell();
 })

如何从路由中检索 forumID 并将其传递给控制器​​?

谢谢

// Given:
// URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby
// Route: /Chapter/:chapterId/Section/:sectionId
//
// Then
$routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}

请参阅 angular 文档 $routeParams

我会改用 angular ui.router 这是事实上的解决方案。比默认 angular 路由好得多。

使用 ui 路由器,您可以将数据附加到状态对象 ...

https://github.com/angular-ui/ui-router/wiki#attach-custom-data-to-state-objects

.state('contacts.list', {
    templateUrl: 'contacts.list.html',
       data: {
         customData1: 44,
         customData2: "red"
     } 
  })

您甚至可以将函数附加到 return 分辨率数据的状态 ...

https://github.com/angular-ui/ui-router/wiki#resolve