尝试使用 knockout 更改事件上传多个 csv 文件。最初,更改函数起作用,并且值被写入 View 模型。问题是当尝试上传第二个 csv 文件时, knockout 更改事件不会触发。有没有办法让更改功能在第一次后重新触发?
<input id="uploadFile" type="file" multiple="multiple" data-bind="event: { change: PO.fileUploadChange }"/>
export function fileUploadChange(data, evt): void {
ko.utils.arrayForEach(evt.target.files, function (file) {
var reader = new FileReader();
reader.onload = LoadCSVData;
reader.readAsText(evt.target.files.item(0))
model.quickEntryModel.files.push(evt.target.files.item(0));
var input = document.getElementById('uploadFile');
if (input != null)
document.getElementById('uploadFile').outerHTML = input.outerHTML;
})
}
最佳答案
问题出在最后一行。我不确定你想在那里做什么,但我假设你正在清除输入。您应该将其移到 arrayForEach
循环之外:
export function fileUploadChange(data, evt): void {
ko.utils.arrayForEach(evt.target.files, function (file) {
var reader = new FileReader();
reader.onload = LoadCSVData;
reader.readAsText(evt.target.files.item(0))
model.quickEntryModel.files.push(evt.target.files.item(0));
});
var input = document.getElementById('uploadFile');
if (input != null)
input.value = "";
}
关于javascript - knockout 变更事件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531697/