$ routeParams не работает в функции разрешения


138

Я использую эту технику для загрузки данных. Итак, я создал следующую функцию разрешения:

NoteController.resolve = {
    note: function($routeParams, Note) {
         return Note.get($routeParams.key);
    }
}

Проблема в том, что $routeParams.keyесть undefinedв момент выполнения resolveфункции. Это правильно / ошибка? Как я могу это исправить?

Ответы:


273

$route.current.params.keyВместо этого вам нужно использовать . $routeParamsОбновляется только после того, как маршрут будет изменен. Итак, ваш код должен выглядеть примерно так:

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}

7
Спасибо! Зачем тогда мне нужен $ routeParams?
fedor.belov

2
Я предполагаю, что docs.angularjs.org/api/ng.$routeParams - хороший API, когда маршрут уже был сопоставлен и изменен. Но это правда, что это немного сбивает с толку ...
pkozlowski.opensource

1
Можно использовать $routeParamsвнутри контроллера
meconroy 08

13
для людей, использующих ui-routerи приезжающих сюда: $stateParamsпуть к
успеху

Если вы используете что-то вроде Ionicфреймворка, вы будете использовать $stateParams.keyвнутри своей функции разрешения, поскольку она использует, ui-routerкак сказал @beret. Мне потребовалось время, чтобы осознать ..
ObjectiveTruth
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.