Ввод объекта возврата resolve
, который должен быть введен в контроллер, но это не так. Я использую обещание, чтобы диспетчер не инициировал до тех пор, пока обещание не будет разрешено, поскольку я выполняю HTTP POST с помощью службы $http
.AngularJS Зависимость впрыска в контроллере разрешения routeProvider
Я также делаю некоторое перенаправление в зависимости от данных ответа, используя $location.path
. Первый маршрут будет перенаправлен на маршрут template1
с данными, которые он получил.
$routeProvider
.when("/auth/:id", amd.route(
{
controller: 'eventController',
controllerUrl: 'app/controllers/eventController',
resolve: {
returnedData: ['$http', '$location', '$route', '$q', function ($http, $location, $route, $q) {
var id = $route.current.params.id;
var defer = $q.defer();
$http({
method: 'POST',
url: 'http://domain/service/webapi',
data: { 'name': id }
}).then(function (response) {
var template = "/template".concat(response.data.displayLayout);
defer.resolve(response.data);
$location.path(template);
return defer.promise;
});
}]
}
}))
.when("/template1", amd.route(
{
templateUrl: 'views/templates/template1.html',
controller: 'eventController',
controllerUrl: 'app/controllers/eventController',
}));
app.controller('eventController', ['$scope', '$routeParams', '$timeout', 'returnedData',
function ($scope, $routeParams, $timeout, returnedData) {
// ...controller code here: $scope.returnedData = returnedData
});
Я получаю ошибку AngularJS:
Error: $injector:unpr Unknown Provider
Любые мысли по этому поводу?
Отличный !! Теперь объект 'returnData' вводится в мой контроллер, когда строка' $ location.path (template) 'закомментирована. Проблема теперь в том, как передать результат разрешения с одного пути на следующий в $ routeProvider? –
Если данные, которые вы разрешаете, являются сложными: Вы можете использовать 'Service' для этого. Потому что «Сервис» является уникальным в модуле, поэтому его можно легко использовать для передачи данных. Определите службу и введите оба пути. , если это очень просто: Вы можете напрямую использовать $ routeParams и поместить данные в следующий путь. Желание может помочь вам – Jelly
Это сработало! Я создал службу непосредственно в модуле, используемом для маршрутизации, и поскольку службы являются одиночными в Angular, я могу повторно использовать его позже, чтобы извлечь данные из него. –