2015-09-10 4 views
1

Я пытаюсь получить значение запроса из моего url с помощью углового маршрутаParams.

Я включил угловой-маршрут в моем HTML странице:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular-route.min.js"></script> 

Включен Ng-Route в моем приложении:

var app = angular.module('app', [ 
    'ngRoute', 
    'reportController' 
]); 

И настроить мой контроллер следующим образом:

var reportController = angular.module('reportController', []); 
reportController.controller('CandidateCtrl', ['$scope', '$routeParams', 
     function($scope, $routeParams) { 
    console.log(JSON.stringify($routeParams, null, 4)); 
    $scope.person = $routeParams.person; 
}]); 

Однако, когда я обращаюсь к следующему URL, routeParams является пустым объектом: {}.

http://localhost:8080/report?person=afe75cc7-fa61-41b3-871d-119691cbe5ad 

Что я делаю неправильно?

Edit:

Я настроить возможный путь - мой routeParams объект все еще придумывают нуль. Я пробовал:

famaApp.config(['$routeProvider', function($routeProvider) { 
      $routeProvider. 
      when('/report:person', {templateUrl: 'Report.html', controller: 'CandidateCtrl'}); 
}]); 

и

when('/report?person', {templateUrl: 'Report.html', controller: 'CandidateCtrl'}); 
+0

Вы должны настроить параметры, которые действительны для данного маршрута. – Oliver

+0

Как уже говорилось, вам нужно сначала настроить свои маршруты и параметры, чтобы их получить. Возможный дубликат этого http://stackoverflow.com/a/22718007/138624 – Teknotica

ответ

0

Вы должны установить маршруты получить аргументы, которые вы хотите с $ routeProvider ..

Пример:

app.config(['$routeProvider', '$locationProvider' function ($routeProvider, $locationProvider) { 

    $routeProvider 
     .when('/', 
     { 
      templateUrl: 'someHtmlUrl', 
      controller: 'someController', 
      controllerAs: 'someCtrl', 
      caseInsensitiveMatch: true 
     }) 
     .when('/:person', 
     { 
      templateUrl: 'someHtmlUrl', 
      controller: 'someController', 
      controllerAs: 'someCtrl', 
      caseInsensitiveMatch: true 
     }) 
     .otherwise(
     { 
      templateUrl: 'someHtmlUrl' 
     }); 
    $locationProvider.html5Mode(true); //Use html5Mode so your angular routes don't have #/route 
}]); 

Тогда вы можете просто сделать

http://localhost:8080/afe75cc7-fa61-41b3-871d-119691cbe5a 

И $ routeProvider вызовет ваш html и ваш контроллер, как вы можете видеть с помощью .when ('/: person' .., а затем вы можете попробовать и получить доступ к вашим $ routeParams, и у вас будет ваш человек там, $ routeParams.person.

+0

Если вы используете $ locationProvider.html5Mode, вам нужно иметь в вашем индексе, если не указано $ locationProvider. html5Mode ({enabled: true, requireBase: false}); – Harben

+0

Да, забыл упомянуть об этом. благодаря –