import merge from 'webpack-merge';
修改原有参数
this.$router.push({
query:merge(this.$route.query,{'maxPrice':'630'})
})
新增一个参数:
this.$router.push({
query:merge(this.$route.query,{'addParams':'我是新增的一个参数,哈哈哈哈'})
})
替换所有参数:
this.$router.push({
query:merge({},{'maxPrice':'630'})
来源:https://blog.csdn.net/sllailcp/article/details/80312848
今天在做一个
vue
的搜索功能,需要从搜索结果页面跳转到细节页面,然后点击返回还能返回到刚刚的结果页面,如果只用window.history.go(-1)当然会重新
刷新
搜索页面,当然是不行的。
我尝试了俩种方式来
修改
url
:
[removed].href,拼接一个搜索的key值,点击搜索的同时,
刷新
了页面,
url
改变了,功能是实现了,可是bug来了…,搜索页面闪烁后才进入结果页,而结合不跳转页面就不会发生闪烁的情况,所以当页面
刷新
时,
vue
实例都会被重新加载。
[removed].hash,
url
中#为网页中的一个位置,当读取此
url
时,页面会自动滚
var query=that.$router.history.current.query
query.isEdit=true
query=JSON.parse(JSON.stringify(query))
var new
Url
=qs.stringify(query)
that.$mess.
新增一个
参数
:
this.$router.push({
query:merge(this.$route.query,{'addParams':'我是新增的一个
参数
,哈哈哈哈'})
替换所有
参数
:
import
Vue
from '
vue
'
import App from './App.
vue
'
import
Vue
Router from '
vue
-router'
import router from './router'
Vue
.use(
Vue
Router)
Vue
.config.productionTip = false
new
Vue
({
某些特定情况下想改变this.$route.query中的数据(就是地址栏中的
参数
),是不能通过直接赋值来改变的,我目前知道的一个办法是下载webpack-merge依赖包实现:
npm i webpack-merge
import merge from 'webpack-merge';
this.$router.push({
query:merge(this.$route.query,{'id':'630'})
如果id本来存在的话就是
修改
id的值,不存在的话就
阅读目录1、在模块化工程中使用它2、使用
vue
-router的步骤:3、路由的默认路径4、HTML5的History模式5、router-link补充6、路由代码跳转7、动态路由8、路由懒加载9、认识嵌套路由10、传递
参数
11、$ route和$ router是有区别的12、导航守卫使用13、keep-alive遇见
vue
-router
1、在模块化工程中使用它
(因为是一个插件, 所以可以通过
Vue
.use()来安装路由功能)
第一步:导入路由对象,并且调用
Vue
.use(
Vue
Router)
最近在做一个WEBAPP项目,在使用$emit、$on做父子、兄弟节点数据传入的时候遇到很多问题,今天总结并分享一下。 一、单页面应用数据传输
Vue
.js 的$emit与$on的基本概念我就不描述了,使用它大致是在根节点上定义一个“事件通道”,如下: 也就是另外定义一个
Vue
的实例,然后我的应用的单页面应用,只有一个根节点,通过router-view来渲染子页面,结构...
vue
路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带
参数
跳转。传参方式可划分为 params 传参和 query 传参,而 params 传参又可分为在
url
中显示
参数
和不显示
参数
两种方式,这就是
vue
路由传参的三种方式。而有的时候需要
vue
改变路由(
URL
)
参数
但是不需要
刷新
页面,就是文章内的方法...
let query = this.$router.history.current.query;
let path = this.$router.history.current.path;
//对象的拷贝
let newQuery = JSON.parse(JS...
就可以
修改
了
但是当已有query对象里面
修改
其中一个值,就会发现虽然this.$route.query发生改变但是浏览器的
url
上的
参数
并没有发生变化, 尝试将已有的
参数
进行深拷贝突然发现就可以了
let newQuery= JSON.parse(JSON.stringify(this.$route.query));
newQuery.index = 2;
在项目中,比如进入我的订单页面,订单页面有不同的几个菜单,如:待付款、待发货、待收货、待收货等;
我们想要实现从不同的菜单点击进入订单详情页,再返回订单列表的时候,还是定位在之前对应的菜单,这时候就需要用到替换路由
参数
。
我们可以在执行点击菜单的时候,就替换掉路由地址的
参数
,以便于之后返回该订单列表的时候,还是定位在对应的菜单项。
替换路由地址
参数
,代码执行如下:
this.$router.replace({ name: 'Orders', params: { tabId: index } })