javascript - 在 Vue CLI 中,与 this.VariableName 一起使用时,data 属性中定义的变量不起作用
问题描述
问题
我想在里面使用一个变量,mounted()
并methods:
因此在data()
里面的属性中定义它export default {}
。虽然没有记录错误,但它不起作用。我怎样才能解决这个问题?
设置
我在vue 版本 3.9.3和npm 版本 6.10.2上运行。我正在使用织物(Javascript HTML5 画布库)库,这是我的问题的一部分。
工作,但不完整的解决方案
首先,我定义了一个变量,在mounted()
该变量中,所有用这个变量调用的函数都可以正常工作mounted()
var canvas = new fabric.Canvas("canvas", {
isDrawingMode: true
});
不工作的解决方案
然后,因为我也想在里面使用这个变量,所以我把属性里面methods:
的内容是这样的:var canvas
data()
data() {
return {
canvas: new fabric.Canvas("canvas", { isDrawingMode: true }),
canvasControlBar: {
color: "#29066b"
}
};
},
然后我methods:
使用了这行代码:
clearCanvas() {
this.canvas.clear();
}
canvas.clear()
除了 chrome 控制台显示它们略有不同外mounted()
,两者的 console.log 都this.canvas.clear()
相同。
我希望使用new fabric.Canvas("canvas", { isDrawingMode: true })
在两者中定义的变量,mounted()
和methods:
。
完整代码
控制台日志
解决方案
使用计算属性而不是数据
我没有把它存放var canvas
在里面data()
,而是把它存放在里面computed:
。因此,我使用了以下代码:
computed: {
canvas() {
return new fabric.Canvas("canvas", { isDrawingMode: true });
}
},
然后我methods:
使用了:
this.canvas.clear();
推荐阅读
- cucumber - 黄瓜中的绑定变量
- django - Django - 我可以从数据库中运行代码吗?
- ios - 致命错误:浮点值无法转换为 Int,因为它要么是无限的要么是 NaN
- node.js - 带有打字稿的节点:TS1123:变量声明列表不能为空
- performance - 如何在颤动中有效地将小部件列表传递到列表视图中?
- swift - 如何使用工具栏中的搜索项?
- opengl - OpenGL顶点属性指针奇怪的行为
- dynamics-crm - 映射记录 GUID 时出现 MS CRM 数据导入问题
- reactjs - 将钩子作为道具传递后的无限循环
- html - 如何使线夹在 ipad safari 上工作?