在AngularJS路由URL中获取参数

时间:2015-08-08 12:55:42

标签: javascript angularjs

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

这是基本路线......

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

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

我知道我可以为具有可变参数的路由执行类似下面示例的操作,例如/#/ inventoryories / 12用于特定库存资源,如此...

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

但是我会为/#inventory如路线做什么?keywords = widgetname& warehouse = 1& min_qty = 5其中包含url字符串中的所有过滤参数?如何在路线中容纳url GET参数?

我试过这样的事,但是没有用......

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

我知道我可以尝试使用$ http服务并通过将范围上的结果数组绑定到ng-repeat或类似的东西来使用json,但我宁愿只是重新获取返回的模板,其中包含过滤后的结果网址。这可能吗?

1 个答案:

答案 0 :(得分:1)

您应该能够像params属性一样访问查询参数,就像常规路由参数一样。如果您有网址/inventories?keywords=widgetname,则params.keywords的值应为'widgetname'

我写了fiddle来证明这一点。我仅使用template进行了测试,但我确信它与templateUrl的工作方式相同。