我可能会以错误的方式解决这个问题,但我有一个控件,允许在其上删除多个文件以便上传它们。对于每个文件,将显示其文件大小,并显示一个文本框以允许输入文件的描述。由于它是多个文件,dropzone上的一个文件由其名称,大小和描述文本框(以及任何相关错误)表示。
当在dropzone上删除文件时,我检查它的文件大小,如果它超过规定的最大值,则使用参数$setValidity
和false调用'maxFileSize'
方法。这设置了dropzone的有效性 - 它存在,所以没关系。我还想设置文件的有效性(由控件表示)。
这是plunker link。
在指令的控制器中,我会听取filesSelected
事件,此处显示正文:
$scope.$on('filesSelected', function(event, args) {
var filesValid = true, files = args.files;
for (var cnt = 0; cnt < files.length; cnt++) {
var fileValid = files[cnt].size <= $scope.maxFileSize;
if (!fileValid) {
filesValid = false;
}
$scope.form[files[cnt].name].$setValidity('maxFileSize', fileValid);
}
ngModel.$setValidity('maxFileSize', filesValid);
});
基本上,行:
$scope.form[files[cnt].name].$setValidity('maxFileSize', fileValid);
当文件的控制组存在时,因为它仍在处理drop事件,因此尚不存在。
有没有人有任何想法我可以解决这个问题?