gpt4 book ai didi

javascript - 将base64字符串绑定(bind)到src图像不适用于vue

转载 作者:行者123 更新时间:2023-12-01 00:58:58 29 4
gpt4 key购买 nike

我正在尝试将 base64 数据绑定(bind)到 img 属性的 src 。代码工作正常,直到将新值设置为 img vue 属性

我构建了这个

new Vue({

el: '#app',
data: {
img: ''
},

methods: {
upload: function( event ){
let file = event.target.files[0];
if( !file ) {
return;
} else {
let imageType = /image.*/;
if ( !file.type.match( imageType ) ) {
return;
} else {
let reader = new FileReader();

reader.onload = function( e ) {
this.img = reader.result;
}

reader.readAsDataURL(file);
}
}
}
}

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">

<img :src="img" width="200" height="200" />
<input type="file" @change="upload">
</div>

不起作用,base64 设置正常,但未渲染到图像。

我的代码有什么问题吗?

最佳答案

this 上下文在 reader.onload 内部更改。

只需将 this 存储在临时变量中,如下所示:

[...]
const that = this;
reader.onload = function( e ) {
that.img = reader.result;
}
[...]

示例:

new Vue({

el: '#app',
data: {
img: ''
},

methods: {
upload: function( event ){
let file = event.target.files[0];
if( !file ) {
return;
} else {
let imageType = /image.*/;
if ( !file.type.match( imageType ) ) {
return;
} else {
let reader = new FileReader();

const that = this;
reader.onload = function( e ) {
that.img = reader.result;
}

reader.readAsDataURL(file);
}
}
}
}

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">

<img :src="img" width="200" height="200" />
<input type="file" @change="upload">
</div>

关于javascript - 将base64字符串绑定(bind)到src图像不适用于vue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56281186/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com