2015-08-08 163 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一樣工作。