【问题标题】:Angular-UI router: set arbitrary GET parameters in routeAngular-UI 路由器:在路由中设置任意 GET 参数
【发布时间】:2015-06-06 20:53:43
【问题描述】:

是否可以使用 angularjs 和 angular-ui-router 在 URL 中设置任意可选参数?

我想我知道如何提取参数 ($stateParam.parameter),但是在从一条路线导航到另一条路线时如何设置它们?简单地调用$state.go(newState, {param1: 'foo', param2: 'bar'}) 似乎不起作用(在这种情况下,至少url 不包含?param1=foo&param2=bar)。我不想事先将参数定义为状态定义的一部分。我希望它们由用户填充。

【问题讨论】:

    标签: javascript angularjs angular-ui-router


    【解决方案1】:

    根据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'}
    

    【讨论】:

    • 附加? 需要定义一个我不能做的参数。 $location.search() 只会更改 URL,但实际上不会触发重新加载。触发手动$state.reload() 会擦除我使用$location.search('foo', 'bar') 设置的查询参数。
    • $location.search('foo', 'yipee') 仅在您在 url (?foo) 中定义 foo 时才会重新加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2016-10-28
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2016-07-17
    相关资源
    最近更新 更多