javascript - knockout 变更事件函数

标签 javascript csv knockout.js

尝试使用 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 = "";
}

Here's a fiddle

关于javascript - knockout 变更事件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531697/

相关文章:

javascript - 当某些字母发生变化时,如何在复数中找到单数?最好的方法是什么?

javascript - 通过ajax函数将字符串传递到它得到回显的页面,PHP,AJAX,JAVASCRIPT

scala - 是否可以以相同或不同的顺序将具有相同标题或标题子集的多个 csv 文件读取到 spark 数据框中?

python - 快速将大型 csv 转换为 geojson

javascript - jQuery:如何根据 URL 附加到特定列表

php - 当通过常规表单提交或 Ajax 请求访问时使浏览器重定向的表单 - 这可能吗?

php - 在 PHP 中定义大量数据的最佳方法是什么?

javascript - knockout JS : Handle event capture phase

javascript - 如何在 KnockoutJS 中访问 ViewModel 之外的可观察对象?

javascript - knockout 多个 View 模型 - 未定义