gpt4 book ai didi

javascript - VueJS - 在回调中为 this.property 赋值

转载 作者:行者123 更新时间:2023-11-30 14:26:19 25 4
gpt4 key购买 nike

我怎样才能强制

this.json = reader.result;

在给定范围内正确地为 this.json 赋值?

因为值是有的,只是没有赋值。

<div id="app" >
<label class="text-reader"><input type="file" v-on:change="getFile($event)"></label>
{{ json }} // it's being set to "test" from getFile function.
</div>

这是 VueJS 代码


new Vue
({
el: '#app',
data: {
json: {}
},
methods:
{
getFile: function(ev)
{
this.json = "test";

var file = ev.target.files[0];
var reader = new FileReader();
reader.onload = function(e)
{
this.json = reader.result;
console.log(this.json); // displays content properly
}

reader.readAsText(file);
}
}
});

到目前为止我一直在尝试的只是添加某种处理程序

getFile: function(ev) 
{
var file = ev.target.files[0];
var reader = new FileReader();
reader.onload = function(e)
{
this.callBackHandler(reader.result);
}

reader.readAsText(file);
},
callBackHandler: function(val)
{
console.log(val);
this.json = val;
}

它大喊:

TypeError: this.callBackHandler is not a function


还使用 callBackHandler 作为参数。

<label class="text-reader"><input type="file" v-on:change="getFile($event, callBackHandler())"></label>

getFile: function(ev, handler)
{
var file = ev.target.files[0];
var reader = new FileReader();
reader.onload = function(handler)
{
handler(reader.result);
}

reader.readAsText(file);
},
callBackHandler: function(val)
{
console.log(val);
this.json = val;
}

最佳答案

getFile 函数应该如下所示:

getFile: function(ev, handler) {
var file = ev.target.files[0];
var reader = new FileReader();
reader.onload = (e => {
this.callBackHandler(reader.result);
})
}

getFile: function(ev, handler) {
var file = ev.target.files[0];
var reader = new FileReader();
var self = this;
reader.onload = function(e){
self.callBackHandler(reader.result);
}
}

getFile: function(ev, handler) {
var file = ev.target.files[0];
var reader = new FileReader();
reader.onload = function(e){
this.callBackHandler(reader.result);
}.bind(this)
}

关于javascript - VueJS - 在回调中为 this.property 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51892374/

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