AngularJS验证属性无法正常用于输入类型文件

时间:2019-02-11 05:23:31

标签: html angularjs forms validation

我们有以下表格

<form name="createForm" class="form-horizontal overlayContainer" enctype="multipart/form-data" ng-submit="submitResourceForm()">

... [ removed for brevity ]

    <div class="form-group">
        <label for="file" class="col-md-2 control-label">Select file</label>
        <div class="col-md-10">
            <label class="btn btn-default" ng-class="{'btn-primary': Data.File}">
                Browse <input type="file" name="file" style="display: none;" em-file-model="Data.File" accept="image/*|application/octet-stream" required />
            </label>
            <span ng-show="Data.File">
                {{Data.File.size}} bytes
            </span>
            <span ng-show="createForm.file.$touched && createForm.file.$invalid" class="validation">File is required.</span>
        </div>
    </div>

    <div class="form-group">
        <label for="name" class="col-md-2 control-label">Name</label>
        <div class="col-md-10">
            <input type="text" name="name" class="form-control" ng-model="Data.Name" required>
            <span ng-show="createForm.name.$touched && createForm.name.$invalid" class="validation">Name is required.</span>
        </div>
    </div>

</div>

验证正在进行提交-没有文件和名称的表单将不会提交-但问题是文件的验证消息从未显示。

好奇的观察夫妇

  • 我在控制器中添加了一个虚拟功能以进行调试,并将其附加到ng单击OK按钮。在函数中使用(Visual Studio)断点时,我尝试检查createForm.file和createForm.name的各种验证属性-所有属性-$ valid,$ touched等-显示为未定义。

  • 我在表单上放置了一些标记,以显示createForm.file。$ touched,createForm.file。$ invalid,createForm.name。$ touched和createForm.name。$ invalid的值。名称属性以定义的值显示,但文件属性没有。

  • 我尝试使用!createForm.file。$ pristine而不是createForm.file。$ touched,这没什么区别。

注意,em-file是我们自己的指令,用于将实际文件添加到模型中。我删除了它,看看它是否在这种情况下起作用,并且没有区别。

0 个答案:

没有答案