方法一(暂时存储在sessionStorage)
修改资料的时候,比如修改姓名,点击修改头像会跳转其他面,再回来时刚修改的姓名会恢复原始数据,下面就是解决这个问题:
HTML:
<div @click=”picture”>
<div class=”touW”>头像</div>
<i class=”right”>
<img :src=tu >
</i>
</div>
<li>
<span class=”mingC”>姓名</span>
<span class=”right”><input v-model=”username”/></span>
</li>
return定义:
return {
url: {},
tu: ”,
username: ”,
}
mounted里:
mounted() {
//如果没有跳转页面,则是正常的接口
if (!sessionStorage.getItem(“onece”)||sessionStorage.getItem(“onece”)==0) {
// 名字接口
this.$http.get(…地址, {
}).then(response => {
this.username = response.data.data.name;
}),
// 头像接口
this.$http.get(…, {
}).then(response => {
this.url = http;
this.tu = that.url + response.data.data.path
})
//跳转头像页面就会暂时保存在sessionStorage里
}else{
var obj=JSON.parse(sessionStorage.getItem(“item”))
// 头像接口
this.$http.get(…, {
}).then(response => {
this.url = http;
this.tu=this.url+response.data.data.path
}),
// 名字接口
that.username=obj.username,
}
}
methods里:
methods: {
save(){
var obj={username:this.username,param:this.param,birth_day:this.birth_day,address:this.address,address1:this.address1,address2:this.address2,selectList:this.selectList,selectoption:this.selectoption,introduction:this.introduction}
sessionStorage.setItem(“item”,JSON.stringify(obj))
},
picture: function () {
this.$router.push(‘跳转的页面’)
sessionStorage.setItem(“onece”,1)
this.save()
}
}
方法二(vue缓存机制include)
app.vue
<template>
<div id="app">
<keep-alive :include="cacheList">
<router-view ></router-view>
</keep-alive>
</div>
</template>
<script>
export default {
name: 'App',
computed: {
cacheList() {//缓存页面
return this.$store.getters.cacheList
}
}
}
</script>
store全局参数
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {//这里放全局参数
cacheList: []//缓存页面
},
getters:{//这里是get方法
cacheList:state=>state.cacheList
},
mutations: {//这里是set方法
PUSH_CACHENAME:(state, name) => {
if (state.cacheList.indexOf(name) == -1) {
// console.log('PUSH_CACHENAME-----', name)
state.cacheList.push(name)
}
// console.log('cacheList-------', state.cacheList)
},
DEL_CACHENAME:(state, name) => {
const index = state.cacheList.indexOf(name)
if (index >= 0) {
// console.log('DEL_CACHENAME-----', name)
state.cacheList.splice(index, 1)
}
// console.log('cacheList-------', state.cacheList)
},
},
actions: {
pushCacheName:({commit}, name) => {
commit('PUSH_CACHENAME', name)
},
delCacheName:({commit}, name) => {
commit('DEL_CACHENAME', name)
},
},
modules: {
}
})
使用方法:
//需要缓存的页面
mounted(){
// 页面缓存
this.$store.dispatch('pushCacheName', this.$route.name)
}
// 首页或者需要去除页面缓存方法
this.$store.dispatch('delCacheName', '页面名称')