【问题标题】:AngularJS force input type=file to be valid when editing model编辑模型时AngularJS强制输入类型=文件有效
【发布时间】:2014-01-29 16:05:18
【问题描述】:

我正在尝试为包含文件的域实体组合 CRUD 设置。在前端,我有一个 type=file 的输入,如下所示:

<input type="file" name="file" ng-model="template.file" required />

如您所见,这已绑定到我的模型。

创建部分运行良好,因为此时需要添加文件,所以满足文件输入需要验证。然而,在编辑时,用户可能永远不会更改文件,但因为它是文件输入并且我没有找到重新填充它的方法,所以所需的文件输入字段永远不会通过验证。

我想到的一种方法是强制文件输入字段在加载时有效,因此问题标题(不确定如何做到这一点)但我意识到这可能不符合 Angular 的原则。

有没有可靠的方法,最好是“角度方式”来做到这一点?

【问题讨论】:

    标签: javascript validation angularjs


    【解决方案1】:

    您可以通过为您的表单添加名称来将其设置为有效。然后你就可以在控制器中做:

        $scope.myform.file.setValidity(true);
    

    【讨论】:

    • 我想这是你可以用文件做的最好的事情。当然,更好的方法是将这一切都包装在指令中。
    • 感谢@AngularAddict,当我简单地重新提交表单时,这有效,没有任何更改,但如果我清空其他字段之一并汇总文件输入也会被标记。如果必需的验证规则被破坏,Angular 必须重新检查模型的其余部分。我将整理一个 plunkr 并将其发布在这里。
    【解决方案2】:

    您可以使用ng-required directive

     <input type="file" name="file" ng-model="template.file" ng-required="!template.file" />
    

    here的另一个回答

    【讨论】:

    • 感谢@allenhwkim,这似乎是最简单的解决方案。我基本上设置了一个名为 addMode 的标志,该标志在创建屏幕中定义为 true,在编辑屏幕中未定义,并且 ng-required="addMode" 进行了我正在寻找的确切验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多