在我的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,但我宁愿只是重新获取返回的模板,其中包含过滤后的结果网址。这可能吗?
答案 0 :(得分:1)
您应该能够像params
属性一样访问查询参数,就像常规路由参数一样。如果您有网址/inventories?keywords=widgetname
,则params.keywords
的值应为'widgetname'
。
我写了fiddle来证明这一点。我仅使用template
进行了测试,但我确信它与templateUrl
的工作方式相同。