我正在尝试上传图片并使用public JsonResult GetFYDetailsForDate(string date)
{
//input date = "6/13/2018"
DateTimeStyles dateTimeStyles = DateTimeStyles.AssumeLocal;
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
var culturedDate1 = DateTime.ParseExact(date, "M/d/yyyy", new System.Globalization.CultureInfo("en-US"));
var culturedDate = DateTime.Parse(date, culture, dateTimeStyles);
}
返回src
。
FileReader
这会返回fileUpload(event) {
var fr = new FileReader();
fr.onload = function() {
getImgSrc(fr.result)
}
}
getImgSrc(src) {
console.log(src);
}
但是,如果我Cannot find name 'getImgSrc'
,我会收到错误this.getImgSrc(fr.result)
,因为getImgSrc does not exist on type'MSBaseReader'
的上下文。如何访问方法this
以返回异步变量?
答案 0 :(得分:2)
尝试使用ES6 lambda箭头语法来保留处理程序中this
的上下文。
fileUpload(event) {
var fr = new FileReader();
fr.onload = () => this.getImgSrc(fr.result);
}
getImgSrc(src) {
console.log(src);
}
如果没有记录任何内容,请尝试以下列方式从传递给result
的活动中定位onload
fileUpload(event) {
var fr = new FileReader();
fr.onload = (event) => this.getImgSrc(event);
}
getImgSrc(event) {
console.log(event.target.result);
}
:
O(N)
希望这有帮助!
答案 1 :(得分:1)
使用非箭头功能(this
时,您正在丢失上下文(function() { ... }
)。
由于getImgSrc
是一种方法,而不是全局范围内的函数,因此您必须使用this
调用它:
fr.onload = () => this.getImgSrc(fr.result);
如果onload
通过了图片上传的结果,您可以使用:
fr.onload = result => this.getImgSrc(result);
如果你没有从问题中的代码中省略这一点,你也忘记使用其中一种读取方法实际开始阅读文件:
fr.readAsBinaryString(file) // to get a string with bytes (0-255)
fr.readAsText(file, encoding) // to get a text string
fr.readAsDataURL(file) // to get a DataURL
fr.readAsArrayBuffer(file) // to get an ArrayBuffer object