AngularJS:如何在路由中传递多个参数

时间:2019-04-08 08:28:00

标签: angularjs routes angular-ui-router

我正在使用AngularJs构建应用程序。 我突然卡在路由中,该路由要在路由中发送多个数据,但无法正常工作。 她是我的路线:

.state('/filter-list', {
    url: "/search/india/:data?",
    views : {
        "" : {
            templateUrl:"/filter/filter-list.html",
            controller: 'filterListCtrl',
            controllerAs:'vm',
            authenticated: true
        }
    },

    resolve: {
        loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
            return $ocLazyLoad.load('/filter-list'); // Resolve promise and load before view
        }]
    }
})

我想这样发送数据: / search / india / state / city / hotel-name

但是,如果我尝试发送此邮件,它将被重新定向到我的主页。 仅“ / search / india / new-delhi”有效。 有人可以帮我解决这个问题。 预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以像这样在路径中添加参数:

.state('/filter-list', {
    url: "/search/india",
    params: {
              state: '',
              city: '',
              hotel-name: ''
            }
    ...
    }

,在您的控制器中,您可以使用$state.go()这样的方法:

$state.go("/filter-list", {
    state: 'your-chosen-state',
    city: 'your-chosen-city',
    hotel-name: 'your-chosen-hotel'
});

在控制器内部,您可以从以下位置捕获参数:

 const state = $stateParams.state;
 const city = $stateParams.city;
 const hotel = $stateParams.hotel-name;