vue页面详情页返回列表页_vue 详情页返回列表页,保留列表页之前的筛选条件...

需求背景

再列表页进行一系列的筛选条件之后,点击某一个进入详情页,当从详情页返回列表页的时候,需要保留之前的筛选条件。

之前的实现方法

路由跳转的时候,把筛选条件json对象放到query中去,传到详情页,返回的时候再带回来,会导致在url后面一直会有这么一堆东西

新的实现方法:

**vuex + cookie**

### vuex ####

state: {

changeFilter: {}//变更列表筛选条件

},

mutations: {

setChangeFilter (state, changeFilter) {

state.changeFilter = changeFilter;

}

}

### cookie ###

//设置cookie

Vue.prototype.setCookie = function (name, value, day) {

if (day !== 0) {

var expires = day * 24 * 60 * 60 * 1000;

var date = new Date(+new Date() + expires);

document.cookie = name + "=" + escape(JSON.stringify(value)) + ";expires=" + date.toUTCString();

} else {

document.cookie = name + "=" + + escape(JSON.stringify(value));

}

};

//获取cookie

Vue.prototype.getCookie = function (name) {

var arr;

var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

if (arr = document.cookie.match(reg))

return JSON.parse(unescape(arr[2]));

else

return null

};

### list.vue ####

var isFromDetailBol = false;//是否是从详情页过来的,来决定是否加载param

methods: {

goToDetail (id) {

//设置cookie & vuex

this.$store.commit('setChangeFilter',this.param)

this.setCookie('changeFilter',this.param,1);

this.$router.push({

path: '/versionflow/changeinfo',

query: {

id: id

}

});

}

},

created:function () {

if ( isFromDetailBol) {

var filter = (JSON.stringify(this.$store.state.changeFilter) == "{}") ? this.getCookie("changeFilter") : this.$store.state.changeFilter;

if (JSON.stringify(filter) != "{}") {//这里不能使用 if(filter) ,filter为空的时候他的值为{}

this.param = filter;

this.currentPage = this.param.page;

this.changeTypeData.changeSelected = this.param.status;

};

};

this.getBranchList(this.param);//进入列表页的时候请求数据的方法

},

beforeRouteEnter: function (to,from,next) {

if (from.name == "changeinfo"){

isFromDetailBol = true;

};

next();

//一开始的时候我是在这里来进行数据的操作的,这里不能直接获得this,需要 next ((vm) =>{ vm.$stroe.state.changeFilter })这样获取,而且next里的方法要在create之后执行(这里他和组件其他钩子函数的执行顺序需要了解一下去😄)

},

### detail.vue ###

returnList (){

this.$router.push({

path: '/versionflow/mychange'

})

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值