Aurelia与文件输入的绑定工作得非常好,但是当我使用一个简单的函数将模型属性重置为空数组时,绑定会被清除,但浏览器文件输入会一直显示所选文件的名称。
<input type="file" class="form-control" id="file-upload" files.bind="selectedFiles" change.delegate="generatePreview()" aria-describedby="fileUploadHelp" ref="selectedFiles">
这是我目前的html,在模型方面,我简单地将selectedFiles
添加为空数组
现在,当我尝试清除输入时,
clearFiles() {
this.selectedFiles = [];
// this.selectedFiles = null; setting to null also produces same results
}
它确实有效,并清除模型中的数据。
但浏览器文件输入会在输入控件中显示所选文件的名称。
使用jquery mindset或简单的JS,可以很容易地添加一行来访问输入并将值设置为''
。
document.getElementById("file-upload").value = null;
但这不应该与绑定一起工作吗?
我错过了一些明显的东西吗
PS:我测试了最新的chrome和firefox,行为是一样的。
正如你所提到的,在vanilla JS中你将value
设置为null。因此,只需在输入中添加value
绑定:
<input type="file" value.bind='val' files.bind='selectedFiles' />
在你的班级中,将val
设置为null:
clearFiles() {
this.val = null;
}