$ 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

13
для людей, які користуються ui-routerта приїжджають сюди: $stateParamsце шлях
petrkotek

Якщо ви використовуєте щось на зразок Ionicфреймворку, ви будете використовувати $stateParams.keyвсередині своєї функції вирішення, оскільки воно використовує так, ui-routerяк сказав @beret. Взяв мене деякий час , щоб зрозуміти ..
ObjectiveTruth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.