html输入文件与knockoutjs绑定

时间:2014-04-14 05:49:33

标签: javascript html file-upload knockout.js

我有一个名为 MainViewModel 的viewModel。

var MainViewModel = function(){
    this.selectedFiles = ko.observableArray();

    this.onFileSelectedEvent = function(evt){

    }
}

我有一个HTML页面,其中包含类型为文件的输入。

<input type="file" data-bind="event:{ change: onFileSelectedEvent }"/>

我想用 onFileSelectedEvent 处理程序填充 selectedFiles 。但是 onFileSelectedEvent 参数是 MainViewModel 的类型,它不包含所选文件。

如何处理所选文件?

1 个答案:

答案 0 :(得分:4)

默认情况下,event binding处理程序第二个参数是事件对象:

var MainViewModel = function(){
    var self = this;
    self.selectedFiles = ko.observableArray();

    self.onFileSelectedEvent = function(vm, evt){
        ko.utils.arrayForEach(evt.target.files,  function(file) {
            self.selectedFiles.push(file.name);
        });
    }
}

演示JSFiddle

第一个参数是当前数据上下文,因此在您的情况下为MainViewModel