为什么带有通知 = false 的 state.go 会导致将来的导航保留当前页面的 URL 参数?


在我的应用程序中,我想使用

当前状态更新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 的版本,并且我的 ui-router 版本是 0.2.15,但这种情况还是会发生。

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

通知 - {boolean=true},如果为 true,将广播$stateChangeStart和$stateChangeSuccess事件。

因此,将其设置为 false 不会广播这些事件。反过来,当您从状态 A 移动到状态 B 时,这不会导致 URL 发生更改。

最新更新