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

138

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

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

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

fedor.belov
источник

Ответы:

273

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

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}
pkozlowski.opensource
источник
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