Использование маршрутизатора ANGULAR по умолчанию, вы можете решить ресурс AJAX, поставив что-то подобное в маршрутизации:Извлечение параметров маршрута в эксплуатации с угловым-ш-маршрутизатор
.when('/view/:recipeId', {
controller: 'ViewCtrl',
resolve: {
recipe: ["RecipeLoader", function(RecipeLoader) {
return RecipeLoader();
}]
},
И внедрение этой услуги:
services.factory('RecipeLoader', ['Recipe', '$route', '$q',
function(Recipe, $route, $q) {
return function() {
var delay = $q.defer();
Recipe.get({id: $route.current.params.recipeId}, function(recipe) {
delay.resolve(recipe);
}, function() {
delay.reject('Unable to fetch recipe ' + $route.current.params.recipeId);
});
return delay.promise;
};
}]);
Я работаю над приложением Ионного в настоящее время, и имею следующие услуги:
services.factory('AlbumLoader', ['Album', '$route','$q', function (Album, $state, $q) {
return function() {
var delay = $q.defer();
Album.get({id: $route.current.params.albumId}, function (album) {
delay.resolve(album);
}, function() {
delay.reject('Unable to fetch album');
});
return delay.promise;
}
}]);
И следующий маршрут:
.state('app.album', {
cache: false,
url: "/albums/:albumId",
resolve: {
album: ['AlbumLoader', function (AlbumLoader) {
return AlbumLoader();
}]
},
views: {
'menuContent': {
templateUrl: "templates/album.html",
controller: 'AlbumCtrl'
}
}
})
Ионные использует angular-ui-router
и документацию для нее не совсем понятно, по этому вопросу. Как я могу выбрать параметры маршрута в службе, используя angular-ui-router
так же, как это делает Угловой маршрутизатор по умолчанию?
EDIT: Все еще есть проблемы с этим. Используя отладчик Chrome внутри загрузчика, $ state.params является пустым объектом, когда URL-адрес равен #/app/albums/17ef729c-af5b-4724-9c69-9585ab542e99
. Это приводит к сообщению об ошибке Error: [$resource:badcfg] Error in resource configuration for action get. Expected response to contain an object but got an array
, потому что идентификатор альбома не проходит.
Уверены, что $ state.current.params.albumId существует? Я думаю, что это: $ state.params.albumId – Przemek
Ваше право, я пытаюсь найти документы сейчас на их веб-сайте. – Nix
Все еще есть проблемы с этим - с помощью отладчика Chrome внутри загрузчика '$ state.params' - пустой объект. В результате появляется сообщение об ошибке «Ошибка: [$ resource: badcfg] Ошибка в конфигурации ресурсов для действия' get'. Ожидаемый ответ содержать объект, но получил массив', потому что идентификатор альбома не проходит. –