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
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您是否找到解决方案来完成上述操作?我也需要同样的东西。