给定以下代码:
<input data-bind="event: { change: uploadImage(this.files[0]) }" style="width: 10px;" type="file">
我得到一个错误,说“文件未定义”。我正在尝试转换这个演示:
https://github.com/paulrouget/miniuploader/blob/gh-pages/index.html
到一个敲除友好的实现。错误发生时,我加载的网页。你知道我如何才能访问该文件,如果它是由用户指定的?
jsfiddle:http://jsfiddle.net/LkqTU/9597/的参数
3条答案
按热度按时间lvjbypge1#
你有两个问题:
uploadImage(this.files[0])
),当对象文字被初始化时,它会被执行一次,所以当KO解析绑定时。所以它会被错误的参数执行一次,你改变的事件将不起作用。你可以通过将它 Package 到一个匿名函数中来使它起作用。请参见文档Accessing the event object, or passing more parameters section.this
没有引用绑定中的当前元素,您需要使用$element
instead.因此,正确的绑定如下所示:
演示JSFiddle。
cs7cruho2#
对于任何感兴趣的人,您可以使用以下自定义绑定,它允许将文件输入元素绑定到包含File的knockout可观察对象。
它处理将可观察值设置为选定的文件(由@nemesv回答),以及在可观察值被设置为空时清除输入元素(参见this回答):
示例:
第一个
fwzugrvs3#
可能这是最简单的一个,你也可以看到图片上传前的预览