🐛 优化组件被复用导致没有刷新数据的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) {
const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === this.$route.fullPath;
})
});
if (this.$vnode && !result) {
if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
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.key;
var cache = this.$vnode.parent.componentInstance.cache;
var keys = this.$vnode.parent.componentInstance.keys;
let cache = this.$vnode.parent.componentInstance.cache;
let keys = this.$vnode.parent.componentInstance.keys;
if (cache[key]) {
if (keys.length) {
var index = keys.indexOf(key);
let index = keys.indexOf(key);
if (index > -1) {
keys.splice(index, 1);
}
@ -27,7 +27,6 @@ Vue.mixin({
}
}
}
next();
},
});
});

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

Loading…
Cancel
Save