为什么state.go with notify = false导致将来的导航保留当前页面的URL参数?

时间:2016-01-19 01:08:09

标签: angularjs angular-ui-router

我的应用程序中有一些页面我想用当前状态更新URL,以便可以共享URL,但我不想重新加载页面,因为我可以进入没有完全重装的新州。

我试图用$ state.go(state,params,{notify:false})来做这件事,这有效......也就是说,直到我导航到其他页面。当我导航到下一页时,我的URL中的查询参数(例如,页码)将在该页面上设置。

更具体一点:我有一个StateA,我称之为$ state.go(StateA,params,{notify:false})。一切都很好。然后我导航到StateB,但StateB现在有我在之前的$ state.go调用StateA时设置的参数。

我为" StateB"定义了一个onEnter事件。并且它显示状态正在输入两次,一次使用正确的参数,然后再次使用前一个$ state.go调用中的错误参数。如果我使用notify = false注释掉$ state.go,那么当然URL不会更新,但未来的页面转换会按预期工作。

另请注意,尽管在HTML模板中设置了ui-sref-opts =" {reload:true,inherit:false"},我的ui-router版本为0.2.15。

1 个答案:

答案 0 :(得分:0)

我无法确定,因为我没有经历过或测试过,但如果您查看此github.io页面,您会在通知选项中看到一部分。它说:

notify - {boolean = true},如果为true,则广播$ stateChangeStart和$ stateChangeSuccess事件。

因此将其设置为false将不会广播这些事件。当您从StateA移动到StateB时,这反过来不会导致URL的更改。