2015-08-08 78 views
0

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

下面是基本路线...

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

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

我知道我可以做类似下面的具有可变的路线的例子参数如/#/存货/ 12为特定的库存资源,像这样......

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

但我想对于像/#/库存的路线呢?关键字= widgetname什么&仓库= 1 & min_qty = 5其中包含我所有的滤镜参数rs中的url字符串?如何在路由中容纳url GET参数?

我想这样的事情,但没有工作...

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

我知道,我可以尝试使用$ HTTP服务,并通过在范围搭售结果的阵列的使用JSON工作ng-repeat或类似的东西,但我宁愿只重新获取从url过滤的结果返回的模板。这可能吗?

+0

您可以像'/ inventory /:inventory_id /:keywords /:warehouse /:min_qty'那样在路线中添加一些参数,以便仅使用params就可以访问相同的参数 –

回答

1

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

我写了一个fiddle来证明这一点。我只用template进行了测试,但我确定它将与templateUrl一样工作。