小编Ant*_*ine的帖子

AngularJS/ui-router:解析时处理404

我是AngularJS和ui-router的初学者,我正试图在未找到的资源上处理404.我想在不更改地址栏中的URL的情况下显示错误.

我已经配置了我的状态:

app.config([
    "$stateProvider", function($stateProvider) {
        $stateProvider
            .state("home", {
                url: "/",
                templateUrl: "app/views/home/home.html"
            })
            .state("listings", {
                abstract: true,
                url: "/listings",
                templateUrl: "app/views/listings/listings.html"
            })
            .state("listings.list", {
                url: "",
                templateUrl: "app/views/listings/listings.list.html",
            })
            .state("listings.details", {
                url: "/{id:.{36}}",
                templateUrl: "app/views/listings/listings.details.html",
                resolve: {
                    listing: [
                        "$stateParams", "listingRepository",
                        function($stateParams, repository) {
                            return repository.get({ id: $stateParams.id }).$promise;
                        }
                    ]
                }
            })
            .state("listings.notFound", {
                url: "/404",
                template: "Listing not found"
            });
    }
]);
Run Code Online (Sandbox Code Playgroud)

(我实际上是在使用TypeScript,但我试图将上面的内容改为纯JavaScript)

例如,如果我导航到以下url: http://localhost:12345/listings/bef8a5dc-0f9e-4541-8446-4ebb10882045 那应该打开listing.details状态.但是,如果该资源不存在,则从resolve函数返回的promise将失败,并在404中捕获:

app.run([
    "$rootScope", "$state",
    function($rootScope, $state) {
        $rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui-router

6
推荐指数
1
解决办法
2192
查看次数

标签 统计

angular-ui-router ×1

angularjs ×1

javascript ×1