Angular JS路由优先级

时间:2016-01-22 08:16:01

标签: angularjs

我是一名新手,只是几天与AngularJS合作。 我现在关注的是$ routeProvider的路由路径的优先级以及如何正确排列它们。 如下面的代码:

do-while

如果网址包含“http://localhost:3000/routing_01.html#/showOrder/123”之类的参数,则会显示模板 但是没有参数,我看不到模板 你能帮我理解$ routeProvider中路由路径的优先级以及如何正确管理它们。 (我确实搜索谷歌但是很糟糕...... :()

JavaScript代码

    routingApp.config(['$routeProvider',
        function($routeProvider) {
            $routeProvider
                .when('/showOrder/:id', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })  ....

HTML代码

    var routingApp = angular
        /**
         *  Module
         *
         * Description
         */
        .module('routingApp', []);

    routingApp.config(['$routeProvider',
        function($routeProvider) {
            $routeProvider
                .when('/', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })
                .when('/showOrder/:id', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })
                .when('/displayOrder/:id', {
                    templateUrl: 'templates/display_order.html',
                    controller: 'DisplayOrderController'
                })
                .otherwise({

                })
        }
    ]);

    routingApp.controller('ShowOrderController', function($scope, $routeParams) {
        console.log("ShowOrderController");
        $scope.orderId = $routeParams.orderId;
    });

    routingApp.controller('DisplayOrderController', function($scope, $routeParams) {
        console.log("DisplayOrderController");
        $scope.orderId = $routeParams.orderId;
    });

1 个答案:

答案 0 :(得分:2)

答案实际上非常简单:没有params,你还没有定义到模板的路径。我想你可以这样修理它:

routingApp.config(['$routeProvider',
        function($routeProvider) {
            $routeProvider
                .when('/', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })
                .when('/showOrder', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })
                .when('/displayOrder', {
                    templateUrl: 'templates/display_order.html',
                    controller: 'ShowOrderController'
                })
                .when('/showOrder/:id', {
                    templateUrl: 'templates/show_orders.html',
                    controller: 'ShowOrderController'
                })
                .when('/displayOrder/:id', {
                    templateUrl: 'templates/display_order.html',
                    controller: 'DisplayOrderController'
                })
                .otherwise({

                })
        }
    ]);

如果未传递参数,则需要添加不带参数的路径以查看模板。但是,请注意,如果您不通过该参数(如果您在模板中使用它)将无法使用(这有点合乎逻辑:-))

换句话说:JB Nizet在评论中说了什么(他打败了我)。