2015-06-06 132 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