Javascript 如何在VueJs中将值从函数传递到变量?
我正在获取图像url的base64。当我将getImage函数传递给savepdf函数并尝试将回调函数base64_data存储在变量中时,它抛出一个错误 无法设置未定义的属性“base64logo” 如何将值从回调函数传递给变量?希望你能理解我的问题Javascript 如何在VueJs中将值从函数传递到变量?,javascript,vue.js,vuejs2,callback,jspdf,Javascript,Vue.js,Vuejs2,Callback,Jspdf,我正在获取图像url的base64。当我将getImage函数传递给savepdf函数并尝试将回调函数base64_data存储在变量中时,它抛出一个错误 无法设置未定义的属性“base64logo” 如何将值从回调函数传递给变量?希望你能理解我的问题 data() { return { base64logo: '', } }, methods: {
data() {
return {
base64logo: '',
}
},
methods: {
getImage(url, callback) {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function () {
var canvas = document.createElement('CANVAS');
console.log('canvas', canvas)
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL();
callback(dataURL);
canvas = null;
};
img.src = url;
},
savepdf() {
this.getImage(this.clientDetails.company_logo, function (base64_data) {
console.log('base64_data', base64_data);
this.base64logo = base64_data; //Error HERE
});
var doc = new jsPDF('p', 'pt', 'a4');
doc.setFontSize(9);
doc.addImage(this.base64logo, 'PNG', 150, 10, 40, 20); //Have to pass here.
}
}
您应该使用arrow函数=>{…}来访问此组件实例:
this.getImage(this.clientDetails.company_logo, (base64_data) =>{
console.log('base64_data', base64_data);
this.base64logo = base64_data; //Now you could access this
});
或将其分配给全局变量:
let that=this
this.getImage(this.clientDetails.company_logo, function(base64_data){
console.log('base64_data', base64_data);
that.base64logo = base64_data; //Now you could access this
});
请注意,应谨慎使用Vue中的箭头函数-高度不鼓励it@Still_learning感谢您提供的这些信息,我通过添加安全选项编辑了我的答案您是否忘记从编辑中删除=>了?否,但我保留了这两个解决方案以及第二个解决方案仍然有=>