🐛 优化组件被复用导致没有刷新数据的bug

dev
smallchill 6 years ago
parent 15b11cad96
commit 6a7a117432
  1. 13
      src/cache.js
  2. 20
      src/views/work/process/leave/handle.vue

@ -5,18 +5,18 @@ Vue.mixin({
if (this.$route.meta.keepAlive === true) { if (this.$route.meta.keepAlive === true) {
const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => { const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === this.$route.fullPath; return ele.value === this.$route.fullPath;
}) });
if (this.$vnode && !result) { if (this.$vnode && !result) {
if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) { if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
if (this.$vnode.componentOptions) { if (this.$vnode.componentOptions) {
var key = this.$vnode.key == null let key = this.$vnode.key == null
? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '') ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
: this.$vnode.key; : this.$vnode.key;
var cache = this.$vnode.parent.componentInstance.cache; let cache = this.$vnode.parent.componentInstance.cache;
var keys = this.$vnode.parent.componentInstance.keys; let keys = this.$vnode.parent.componentInstance.keys;
if (cache[key]) { if (cache[key]) {
if (keys.length) { if (keys.length) {
var index = keys.indexOf(key); let index = keys.indexOf(key);
if (index > -1) { if (index > -1) {
keys.splice(index, 1); keys.splice(index, 1);
} }
@ -27,7 +27,6 @@ Vue.mixin({
} }
} }
} }
next(); next();
}, },
}); });

@ -13,25 +13,25 @@
<span>审批信息</span> <span>审批信息</span>
</div> </div>
<el-form-item label="申请人"> <el-form-item label="申请人">
<el-input :disabled="true" v-model="form.flow.assigneeName" /> <el-input :disabled="true" v-model="form.flow.assigneeName"/>
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="开始时间"> <el-form-item label="开始时间">
<el-input :disabled="true" v-model="form.startTime" /> <el-input :disabled="true" v-model="form.startTime"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="结束时间"> <el-form-item label="结束时间">
<el-input :disabled="true" v-model="form.endTime" /> <el-input :disabled="true" v-model="form.endTime"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="请假理由"> <el-form-item label="请假理由">
<el-input :disabled="true" type="textarea" v-model="form.reason" /> <el-input :disabled="true" type="textarea" v-model="form.reason"/>
</el-form-item> </el-form-item>
<el-form-item label="批复意见"> <el-form-item label="批复意见">
<el-input type="textarea" v-model="form.comment" /> <el-input type="textarea" v-model="form.comment"/>
</el-form-item> </el-form-item>
</el-card> </el-card>
<el-card shadow="hover"> <el-card shadow="hover">
@ -89,6 +89,16 @@
created() { created() {
this.init(); this.init();
}, },
beforeRouteUpdate(to, from, next) {
//
// /foo/:id /foo/1 /foo/2
// Foo
// 访 `this`
if (to.fullPath !== from.fullPath) {
next();
this.init();
}
},
methods: { methods: {
init() { init() {
this.taskId = this.$route.params.taskId; this.taskId = this.$route.params.taskId;

Loading…
Cancel
Save