当前位置: 代码迷 >> JavaScript >> 在AngularJS路由URL中获取参数
  详细解决方案

在AngularJS路由URL中获取参数

热度:64   发布时间:2023-06-07 11:49:38.0

在我的Angular应用程序中,我显示了清单项目列表。 在此页面上,有一个表格可以过滤或执行搜索。 该表单提交给当前路线模板/页面的相同URL,但在URL中附加get参数以执行过滤器/搜索。 即/#/库存和/#/库存?keywords = widgetname

这是基本路线...

myApp.config(function($routeProvider) {
    $routeProvider

    .when('/inventories', {
        templateUrl: '/inventories.html',
        controller: 'inventoriesController'
    })
});

我知道我可以针对具有特定参数的可变参数(例如/#/ inventories / 12)的路由执行以下示例操作,如下所示:

.when('/inventories/:inventory_id', {
    templateUrl: function(params) { return '/inventories/' + params.inventory_id + '.html'},
    controller: 'inventoryController'
})

但是,对于像/#/ inventories这样的路由,我该怎么办?keywords = widgetname&warehouse = 1&min_qty = 5,该路由在url字符串中包含我所有的过滤器参数? 如何在路由中容纳url GET参数?

我尝试过类似的操作,但不起作用...

.when('/inventories?:get_params', {
    templateUrl: function(params) { return '/inventories?' + params.get_params},
    controller: 'inventoryController'
})

我知道我可以尝试通过将范围内的结果数组绑定到ng-repeat或类似的东西来尝试使用$ http服务并与json一起工作,但是我宁愿仅重新获取从url返回经过过滤的结果的模板。 这可能吗?

您应该能够从params属性访问查询参数,就像常规路由参数一样。 如果您有URL /inventories?keywords=widgetname的价值params.keywords因此应该是'widgetname'

我写了一个来证明这一点。 我仅使用template进行了测试,但是我确信它可以与templateUrl