【发布时间】:2017-06-08 17:14:29
【问题描述】:
我有一个应用程序,它有一堆改变状态的下拉组件。 .下拉菜单的状态控制一个主数据表,该数据表具有基于参数的信息。很酷。
我还想更改 URL,以便用户可以与同事共享 url,并且无需选择下拉参数即可显示数据表。
例如:http://localhost:8080/?region=372&pc=341&pc=375 或 http://localhost:8080/?region=372&pc=341&vendor=123456
现在我已经通过手动查看选择的下拉参数(通过watch)并构建一个url并使用this.$router.push在事情发生变化时更新浏览器历史记录来完成这项工作。我觉得这并不完全正确,但这是我能够持续更新 url 的唯一可靠方法。
主要问题是当我点击浏览器的后退/前进按钮时,组件不会根据 url 更新它们的状态。如果我后退/前进,应用程序将保持当前状态。我该如何正确处理?
【问题讨论】:
-
你使用的是历史模式吗?
-
是的。没有hasbangs。
-
我猜是因为你使用的是 URL 查询参数,它不像 vue-router 的路由参数那样绑定。也许您可以在
$route.query上放置一个观察者并根据更改的值设置数据? -
这就是我现在正在做的事情,但问题是我认为框架可以更轻松地处理一些事情似乎需要大量的手动工作。主要问题是当用户改变状态时我改变了 url 查询,这反过来又重新填充了数据表。当 url 查询基于上述更新时,观看
$route.query根据 URL 更新应用程序的状态。这有点导致循环人口问题。当手动更新状态时,我不得不手动设置一个变量,以免重新检查$route.query。
标签: javascript vue.js state