淘汰赛变赛事件功能

时间:2017-10-02 18:41:00

标签: javascript csv knockout.js

尝试使用敲除更改事件上传多个csv文件。最初,更改功能起作用,值将写入viewmodel。问题是当尝试上传第二个csv文件时,敲除更改事件不会触发。有没有办法让更改功能在第一次之后重新启动?

<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;
    })


}

1 个答案:

答案 0 :(得分:1)

问题在于最后一行。我不确定你在那里做什么,但我假设你正在清理输入。你应该把它移到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 = "";
}

Here's a fiddle