2015-06-06 170 views
2

是否可以使用angularjs和angular-ui-router在URL中設置任意可選參數?Angular-UI路由器:設置路由中的任意GET參數

我想我知道如何提取參數($stateParam.parameter),但是如何在從一條路線導航到另一條路線時設置它們?簡單地打電話$state.go(newState, {param1: 'foo', param2: 'bar'})似乎不起作用(至少在這種情況下URL不包含?param1=foo&param2=bar)。我不想事先將參數定義爲狀態定義的一部分。我希望他們由用戶填充。

回答

0

根據documentation,你可以追加?到url。然後,您可以命名每個查詢參數,如下所示:/go-to?param1=hello&param2=world。這是一個很好的閱讀主題:link

此外,如果你想完全任意的參數,你應該使用$location.search()而不是$ stateParams。 (Docs)獲取/通過使用$location.search()設置GET參數的

實施例:

// given url http://example.com/#/some/path?foo=bar&baz=xoxo 
var searchObject = $location.search(); 
// => {foo: 'bar', baz: 'xoxo'} 

// set foo to 'yipee' 
$location.search('foo', 'yipee'); 
// $location.search() => {foo: 'yipee', baz: 'xoxo'} 
+0

附加''要求來定義參數,我不能這樣做。 '$ location.search()'只會改變URL,但不會實際觸發重載。觸發'$ state.reload()'手動擦除我用$ location.search('foo','bar')'設置的查詢參數。 – orange

+0

'$ location.search('foo','yipee')'只在你的url('?foo')中定義'foo'時重新加載。 – orange