Javascript angular ui router:如何在路径参数更改时重新加载状态,而在查询参数更改时不重新加载状态?

Javascript angular ui router:如何在路径参数更改时重新加载状态,而在查询参数更改时不重新加载状态?,javascript,angularjs,angular-ui,angular-ui-router,Javascript,Angularjs,Angular Ui,Angular Ui Router,例如,我希望导航中的此更改重新加载状态: #/detail/1 #/detail/2 但我不希望此导航重新加载状态: #/detail/1?search=blah #/detail/1?search=huzzah 根据ui路由器文档,设置reloadOnSearch:false应该可以实现这一点,但请尝试下面的plunk。当reloadOnSearch===false时,更改path参数不会重新加载状态,即使文档中说应该这样做 Plunkr:我创建了一个,演示了ui路由器功能reload

例如,我希望导航中的此更改重新加载状态:

  • #/detail/1
  • #/detail/2
但我不希望此导航重新加载状态:

  • #/detail/1?search=blah
  • #/detail/1?search=huzzah
根据ui路由器文档,设置
reloadOnSearch:false
应该可以实现这一点,但请尝试下面的plunk。当
reloadOnSearch===false
时,更改path参数不会重新加载状态,即使文档中说应该这样做

Plunkr:

我创建了一个,演示了
ui路由器
功能
reloadOnSearch
的工作原理:

重新加载搜索: 布尔值(默认为true)。如果为false,则不会仅仅因为搜索/查询参数已更改而重新触发相同的状态。在不触发重新加载的情况下修改$location.search()时非常有用

这说明,如果我们有这样的状态

.state('index.detail', {
      url: '/detail/:id',
      reloadOnSearch : false,
      ...
    })
导航到

  • ui sref=“index.detail({id:1})”
将在导航到时加载此状态

  • ui sref=“index.detail({id:any other id})”
我什么也做不了。但是如果我们将引入如下定义的新(例如兄弟)状态:

.state('index.other', {
      url: '/other/:id',
      reloadOnSearch : false,
      ...
    })
导航到下面的序列将始终重新触发状态重新加载,不是因为参数更改,而是因为状态更改


  • 这是UI路由器中的一个错误,在0.2.15版中已修复:


    升级到最新版本将解决此问题

    谢谢,但这并不能回答我的问题。“If false不会仅仅因为搜索/查询参数已更改而重新触发相同的状态。”“搜索/查询参数”指$location.search(),即问号后的所有内容。我希望能够更改问号之前的内容并重新加载状态。这是对术语的错误理解。1) 搜索/查询参数是映射为参数的url的一部分(例如stateName/paramValue/stateName?param1=value1¶m2=value2)。其余部分映射为状态名称标识符。那么reloadOnSearch=false是关于什么的呢?如果url的参数部分发生更改,请不要触发状态重新加载。但是如果国家本身改变了。。。它会重演的。更清楚一点吗?从
    ui路由器的角度来看,url代表唯一的状态定义。它可以是具有多个参数的一个或多个/嵌套状态。有些甚至可以是a-query参数的格式。但最后,这个url被转换成1)状态和2)参数。没别的了。和reloadOnSearch=false表示:当前状态的任何参数都已更改==不重新加载。这正是文件的内容。说,这就是我的普朗克所展示的1:1。但我只是想解释一下,别误会我。。。我同意你的看法不同。@MattYork在你的OP中,你正在更改散列后的部分,并将reloadOnSearch设置为false,其目的是忽略散列后部分的更改。这个问题很容易理解。文档可能模棱两可,但RadimKöhler只是简单地陈述了有关其工作原理的真实情况。@JoshRibakoff有两种不同类型的url参数:路径和搜索(又称查询)。reloadOnSearch仅适用于搜索参数,而不适用于路径参数。查看此问题:github.com/angular-ui/ui-router/issues/1191DId您是否找到解决方案来完成上述操作?我也需要同样的东西。