更新组件,兼容MES PullRequest #924
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { defineComponent, nextTick, onMounted, ref, getCurrentInstance, isVue3, h } from 'vue-demi';
|
||||
import { defineComponent, nextTick, onMounted, ref, getCurrentInstance, isVue3 } from 'vue-demi';
|
||||
import { hh } from './DemiHelper';
|
||||
import SlotTester from '../SlotTester.vue';
|
||||
import { InvokerContext } from '../types/InvokerContext';
|
||||
|
||||
console.log('receiver-loaded');
|
||||
|
||||
@@ -95,23 +95,44 @@ export default defineComponent({
|
||||
parentId: {
|
||||
type: [Number, String],
|
||||
default: () => 0
|
||||
},
|
||||
parentKey: {
|
||||
type: String,
|
||||
default: () => 'modInvoker'
|
||||
}
|
||||
},
|
||||
setup(props) {
|
||||
const instance = getCurrentInstance();
|
||||
let invokerContext: any = null;
|
||||
let invokerContext: InvokerContext = null!;
|
||||
const renderVersion = ref(0);
|
||||
if (window.parent != window) {
|
||||
const invoker = window.parent['MES_MOD_INVOKERS'][props.parentId];
|
||||
const invoker = window.parent[props.parentKey][props.parentId];
|
||||
invokerContext = invoker;
|
||||
|
||||
}
|
||||
else {
|
||||
throw new Error("[Receiver] 组件必须在iframe中使用");
|
||||
}
|
||||
|
||||
const renderItems = ref(invokerContext.getRenderContext() ?? []);
|
||||
|
||||
onMounted(() => {
|
||||
nextTick().then(() => {
|
||||
console.log('mounted-finish');
|
||||
if (!invokerContext['modContext']) {
|
||||
invokerContext.initFinish(instance?.proxy);
|
||||
invokerContext.initFinish({
|
||||
get renderVersion() {
|
||||
return renderVersion.value;
|
||||
},
|
||||
Update: function (): void {
|
||||
console.log('[Receiver] Force Update', renderVersion.value);
|
||||
renderVersion.value += 1;
|
||||
renderItems.value = invokerContext.getRenderContext() ?? [];
|
||||
instance?.proxy?.$forceUpdate();
|
||||
},
|
||||
get refs() {
|
||||
return instance?.proxy?.$refs;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -120,7 +141,7 @@ export default defineComponent({
|
||||
console.log('receiver-update', renderVersion.value);
|
||||
if (renderVersion.value < 0) return;
|
||||
if (invokerContext.getRenderContext) {
|
||||
const itemList = invokerContext.getRenderContext();
|
||||
const itemList = invokerContext.getRenderContext() ?? [];
|
||||
|
||||
// const list = renderContext(itemList);
|
||||
// console.log('item-list', list);
|
||||
|
Reference in New Issue
Block a user