【发布时间】:2021-10-12 18:44:59
【问题描述】:
我想创建一个使画布居中的按钮。单击按钮应调用rec() 方法,该方法应使mounted() 中创建的画布居中。
但这不起作用。我怀疑这些方法不能真正引用 mounted() 中创建的东西。
如何解决这个问题?
<div id="main">
<canvas id="c" width="400" height="400"></canvas>
</div>
<button v-on:click="recenter">Recenter</button>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.5.0/fabric.js"></script>
<script>
const app = new Vue(
{
el: '#main',
methods: {
recenter: function rec() {
var fabric_canvas = new fabric.Canvas('c')
fabric_canvas.setViewportTransform([1,0,0,1,0,0]);
}
},
mounted() {
var fabric_canvas = new fabric.Canvas('c');
var group = [];
var myurl = "https://upload.wikimedia.org/wikipedia/commons/a/a0/Svg_example1.svg";
fabric.loadSVGFromURL(
myurl,
function(objects,options) {
var loadedObjects = new fabric.Group(group);
fabric_canvas.add(loadedObjects);
fabric_canvas.renderAll();
},
function(item, object) {
group.push(object);
}
);
}
}
);
</script>
【问题讨论】:
-
应该重新定位在mounted()中创建的画布 - 您在方法中创建一个新的,而不是重新定位现有的。
-
是的。我不知道如何使用现有的。我是一个完整的 js 菜鸟。
标签: javascript vue.js fabricjs