Javascript 如何设置组件';文件读取器事件中的属性值
我有这个部分:Javascript 如何设置组件';文件读取器事件中的属性值,javascript,typescript,angular,Javascript,Typescript,Angular,我有这个部分: export class FileFormComponent { _base64: string; handleFile($event){ var input = $event.target; var reader = new FileReader(); reader.onloadend = function() { this._base64 = reader.result } reader.readAsDataURL(input.
export class FileFormComponent {
_base64: string;
handleFile($event){
var input = $event.target;
var reader = new FileReader();
reader.onloadend = function() {
this._base64 = reader.result
}
reader.readAsDataURL(input.files[0]);
console.log(this._base64);
}
}
问题在于
console.log(this.\u base64)
logsundefined
。在onloadend
事件中,似乎此
未引用组件的上下文。如何从FileReader
onloadend
事件内部设置\u base64
属性的值 我会使用箭头函数。通过这种方式,您可以使用词法This(对应于组件实例):
有关更多详细信息,请参阅此链接:
- 我在这种情况下使用的模式是:
var self = this;
reader.onloadend = function(){
console.log(self._base64);
}
这只是因为您的
console.log
在onloadend
回调之前被调用;-)您可以在视图中绑定\u base64
属性以查看其值。类似这样的:{{{u base64}
。通过这种方式,您将看到值是否已更新…仍然未定义这在JavaScript中是一种解决方案,但在TypeScript中,箭头函数是一种方法。它不会改变此
参考。感谢您的教育:)
var self = this;
reader.onloadend = function(){
console.log(self._base64);
}