javascript – angular ui-router:当查询参数更改时,如何重新加载路径参数更改状态,但不重新加载?

例如,我希望导航中的这个更改重新载入状态:

>#/ detail / 1
>#/ detail / 2

但是我不希望这个导航重新加载状态:

>#/ detail / 1?search = blah
>#/ detail / 1?search = huzzah

根据ui-router文档,设置reloadOnSearch:false应该完成这个,但尝试下面的plunk.当reloadOnSearch === false时,更改路径参数不会重新加载状态,即使文档说它应该.

Plunkr:http://run.plnkr.co/ZPy9uabYlkMilwdS/#/param

最佳答案
我创建了一个plunker,表明ui-router功能reloadOnSearch的工作原理如下:here

reloadOnSearch:

Boolean (default true). If false will not retrigger the same state just because a search/query parameter has changed. Useful for when you’d like to modify $location.search() without triggering a reload.

那么这个说法呢,如果我们有这样的状态的话

.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,
      ...
    })

导航到下面的序列将总是重新触发状态重新加载,而不是因为参数改变,而是因为状态改变

>< a href =“#/ index / detail / 1”...
>< a href =“#/ index / other / 1”... //将重新启动
>< a href =“#/ index / detail / 2”... //因为状态
>< a href =“#/ index / other / 2”... //正在改变
看到所有在行动here

转载注明原文:javascript – angular ui-router:当查询参数更改时,如何重新加载路径参数更改状态,但不重新加载? - 代码日志