在角度上的路线上的查询字符串

时间:2015-12-21 22:14:24

标签: angularjs routes angular-ui-router

我想配置我的路由以便能够在其URL之后接受任何整数。 例如,

/product/id/1242

API工厂将访问此整数作为API要查询的值。

我已经阅读了关于设置路线的文档,但是无法做到这一点。如果我输入一个带整数的URL,它只会重定向到登录页面。

angular.module('myapp123.routes', [])


.config(['$stateProvider', '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider) {

        $urlRouterProvider.otherwise("/login");
        //$location.path('/product').search('queryStringKey', value).search( ...);
        $stateProvider

            .state('login', {
                url: '/login',
                views: {
                    'menuContent': {
                        templateUrl: 'app/core/login/login.html'
                    }
                },
                controller: function ($ionicHistory, $scope) {
                    console.log('Clearing history!');
                    $ionicHistory.nextViewOptions({
                        historyRoot: true,
                        disableBack: true
                    });
                }


            })

            .state('product', {
                url: '/product',
                when:('/product/id/product_id')
                views: {
                    'menuContent': {
                        templateUrl: 'app/components/product/product.html'
                    }
                }


            })

2 个答案:

答案 0 :(得分:0)

根据the docs这应该可以解决问题。 [0-9]将产品ID限制为数字。

.state('product', {
                url: '/product/id/{productId:[0-9]}',
                views: {
                    'menuContent': {
                        templateUrl: 'app/components/product/product.html'
                    }
                }

答案 1 :(得分:0)

谢谢 - 由于某种原因无法使您的版本正常运行。

我找到了一个可行的解决方法:

        .state('product', {
        url: '/product/id/:product_id',
        templateUrl: 'app/components/product/product.html',
        controller: function($scope, $stateParams) {
            $scope.product_id = $stateParams.product_id;
        }
    })