2016-04-26 96 views
1

我正在使用Angular的JS众所周知的ng文件上传指令(https://github.com/danialfarid/ng-file-upload),但是我遇到了有关验证的问题。我添加了ngf-pattern指令,以防止用户上传某些文件格式。这很好,每个无效文件在$ invalidFiles数组中都可用。无论如何要清除这个数组?Angular JS ng文件上传

我使用$ invalidFiles数组来检测何时使用了无效文件,并提醒用户。该文件不会显示在用户界面中,也不会添加到我的模型中,但仍然无法提交表单,因为表单无效。只有在我添加一个有效的文件后,我才能提交表单。有没有办法检测无效文件,但仍然能够提交表单?

希望我很清楚..谢谢!

+0

部分检查的官方文件中,我们可以为您的方案小提琴? – Sampath

+0

是的!你可以在这里找到它:http://jsfiddle.net/2vq88rfs/631/。如果添加了无效文件,它将不会被添加到模型中,它将被添加到错误文件数组中,并且该表单将无效,直到添加有效文件。我只是想能够捕捉错误,但仍然提交表单(如果之前已经添加了一些有效的文件)。希望它有帮助.. – tsahnar

+1

@ tsahnar如果你想提交一个无效的表单,那么知道表单是否有效的意义是什么? – Akis

回答

0

也许你真正需要的东西是ngf-change而不是ngf-select。根据文档,只要您选择,删除或清除,就会调用您分配给ngf-change指令的处理函数。

如果你想达到的唯一的事情就是让表单提交,无论它是有效的还是无效的,另一种方法是在ng-model-options利用。有一个选项叫做allowInvalid,默认情况下它是false,将它设置为true就可以了。

所以在你的例子:

<button name="bla" multiple accept="image/*"    
     ngf-keep="true" 
     ng-model="myFiles" 
     ngf-pattern="'image/*'" 
     ngf-max-size="1MB" 
     ngf-change="handleFiles($files, $invalidFiles)" 
     ngf-model-options="{allowInvalid: true}"> 
    Select Files 
</button> 

注意我们已经在这改变了过去的两个指令。

对于完整的参考,你可以在Full reference - File select and drop

+0

谢谢,正如你所说的那样,做到了! – tsahnar

+0

@tsahnar无后顾之忧,随意投上一票,如果你的作品。 – kavare

1

这是你所需要的:JsFiddle

$scope.submit = function() { 
    alert('form is ready'); 
    } 
+0

现在你删除了检查,如果表单有效与否。条件,所以错失关键 – tsahnar

+0

你仍然可以赶上错误,也构成可以提交没有?如果不是,你需要什么? – Sampath