Angularjs извлекает параметр из routeProvider

#angularjs #params #route-provider

#angularjs ( ангулярджс ) #параметры #поставщик маршрута #angularjs

Вопрос:

Быстрый вопрос, возможно ли получить параметр из $ routeProvider на следующем этапе?

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

$routeProvider
    .when('/', {
        templateUrl: 'views/home.html',
        controller: 'IndexController'
    })
    .when('/students/:id', {
        templateUrl: 'views/studentRecord.html',
        controller: 'StudentsController',
        resolve: {
            students: function(getStudents) {
                  return getStudents.getAllStudents();
                },
                movies: function(getStudents,$stateParams) {
                    return getStudents.getStudentbyId($stateParams.id);
                  }
              }
            });
$locationProvider.html5Mode(true);
  

}]);

Итак, где у меня есть ‘getStudentbyId(5)’, в идеале я хотел бы получить поле значения:id. После долгого поиска в Google я не могу найти способ. Есть идеи?

Приветствия

РЕДАКТИРОВАТЬ: при вводе $ stateParams в мой app.config я получаю ‘(анонимная функция) angular.js: 78’ такой же, как при использовании $ params .. например.

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

Комментарии:

1. Вы пробовали просто вводить и использовать $ stateParams в тот момент?

2. я ввел $ stateParams , парень, который это редактировал, сделал.. который я только что увидел .. и собираюсь попробовать сейчас

3. @ipaul при вводе $ stateParams в мой app.config я получаю ‘(анонимная функция) angular.js: 78’ такой же, как при использовании $ params

4. Я собирался сказать ‘Я не вижу, чтобы вводились параметры состояния’, но это имеет смысл. На этом этапе вы настраиваете маршрутизацию. Я думаю, что лучше всего выполнить поиск данных movies в вашем контроллере, куда можно ввести параметры состояния. Я знаю, что на самом деле это не ответ, но внедрение зависимости не похоже на то, что оно применимо для «разрешения».

5. Люди! Есть ngRoute и есть uiRouter . То, что вы используете модуль в своем приложении, не означает, что все это делают (или должны делать).

Ответ №1:

Все это есть в документах:

Имейте в виду, что ngRoute.$routeParams в этих функциях разрешения все равно будет ссылаться на предыдущий маршрут. Использовать $route.current.params .


Например.:

 resolve: {
    studentID: function ($route) {
        return $route.current.params.id;
    }
    ...
}
  

Смотрите также эту короткую демонстрацию.

Комментарии:

1. я добавил $route.current.params, однако я получил неперехваченную ошибку практически без описания — возможно, мне следовало это добавить. не могли бы вы привести пример того, как это работает?

2. Я только что попробовал, но сейчас не могу увидеть свою веб-страницу. Также нет ошибок в консоли

3. Да, это должно сработать. Должно быть, проблема вызвана чем-то другим.