В моей routeProvider, я использую resolve
вариант (user
) для извлечения пользовательских данных:угловых инъекционный с использованием данных разрешать маршрут
// route.js
$routeProvider
.when('/view', {
templateUrl: 'home.html',
controller: 'ViewController',
resolve: {
user: getUser // some promise that resolves a user object
}
});
<body ng-app="app">
<nav ng-controller="NavController"></nav>
<main ng-view="">
{{user | json}}
</main>
</body>
Это прекрасно работает, когда я прохожу user
в мой маршруте контроллеры.
Но, то <nav>
HTML выдает ошибку, я предполагаю, что, поскольку он не находится внутри этого ng-view
тега
// Controller.js
angular.module('Controllers', [])
.controller('NavController', ['$scope', 'user', function($scope, user){
$scope.user = user; // broken!
})
.controller('ViewController', ['$scope', 'user', function($scope, user){
$scope.user = user; // works!
});
Error: [$injector:unpr] Unknown provider: userProvider <- user <- NavController
Кто-нибудь знает, как я могу получить разрешенные данные (user
) в «внешний» контроллер, например, навигация?
AFAIK вы не можете вводить 'user' в' NavController', потому что вы объявляете его внутри представления. Используйте службу или любой другой метод, чтобы получить текущего пользователя в этом контроллере –
используйте сервис или оберните оба ваших контроллера в родительском контроллере, который они могут наследовать от – atsituab