【发布时间】:2019-09-14 04:54:37
【问题描述】:
我试图在另一个组件中打开我的 CanvasPreview 组件,但它失败了, 首先,它会快速显示对话框/模式,然后如果我打开 Vue Dev 工具,它会再次隐藏 如果我在控制台中手动将 showCanvasPreview 编辑为 true,则显示模式将被设置为 false。 所以我猜它又被设置为 false,但我不明白为什么。
这是对话框/模态组件:
<template>
<v-dialog
v-model="show"
>
<v-card>
<v-card-actions>
<v-container grid-list-md text-xs-center>
<v-layout row wrap>
</v-layout>
</v-container>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
import CanvasPreviewSourceUpload from './CanvasPreviewSourceUpload';
export default {
components: {
'canvas-preview-source-upload': CanvasPreviewSourceUpload
},
props: {
imgSrc: String,
visible: Boolean
},
computed: {
show: {
get () {
return this.visible;
},
set (visible) {
if (!visible) {
this.$emit('closePreview');
}
}
}
},
}
</script>
在我的父组件中,我这样调用预览组件:
<template>
<div>
//... some more html
<div id="canvas-body">
<canvas id="pdf-render"></canvas>
<canvas id="selectCanvas"
@mousedown="markElementOnMouseDown"
@mousemove="updatePreview"
@mouseup="markElementOnMouseUp">
</canvas>
</div>
<canvas-preview
:imgSrc="this.targetImage.src"
:visible="showCanvasPreview"
@closePreview="showCanvasPreview=false">
</canvas-preview>
</div>
</template>
<script>
import CanvasPreview from '@/js/components/CanvasPreview';
export default {
components: {
'canvas-preview': CanvasPreview
},
props: {
'name': String
},
data: () => ({
showCanvasPreview: false,
...
}),
methods: {
markElementOnMouseUp (event) {
this.isDragging = false;
this.targetImage.src = this.clipCanvas.toDataURL();
this.targetImage.style.display = 'block';
this.showCanvasPreview = true;
console.log("mouseup: " + this.showCanvasPreview);
},
}
</script>
【问题讨论】:
-
您介意提供 CodePen 吗?
-
@MattOestreich 我可以试试,如果你有兴趣,我也可以通过 ngrok 链接分享项目的当前状态
标签: javascript vue.js components vuetify.js