【问题标题】:How to add form validation which populated using directive in angular js?如何在 Angular js 中添加使用指令填充的表单验证?
【发布时间】:2014-02-03 13:57:23
【问题描述】:

我正在开发AngularJS 中的注册表单。其中我在 4 个不同的地方重复使用相同的表格。为此,我在单个 html 页面上使用通用表单,如下所示。

<div>
   <div>
        <div class="label-div float-left">
            <label>
                Address:
             </label>
            <input type="text" ng-model="addressInfo.addressLine1" />
        </div>
   </div>
</div>

在我使用AngularJSdirective 注册时,我在如下4 个不同的地方重复使用它

<registration-form></registration-form>
<input type="button" value ="continue" >

我如何禁用注册 html 中的按钮,因为我的指令模板有我的表单内容。

【问题讨论】:

    标签: javascript html forms angularjs


    【解决方案1】:

    我会将提交按钮放在指令中,并通过将提交按钮传递到指令的范围来处理提交按钮的 ng-click 事件

    scope:{
    onSubmit;'&'
    }
    

    在你的指令链接函数中:

    scope.submit=function(){
    scope.onSubmit();
    }
    

    和你的指令模板:

    <div>
       <form name="contactsForm">
            <div class="label-div float-left">
                <label>
                    Address:
                 </label>
                <input type="text" ng-model="addressInfo.addressLine1" />
                <input type="button" value ="continue" ng-click="submit()" ng-disabled="contactsForm.$invalid" >
            </div>
       </form>
    </div>
    

    用法:

    <registration-form on-submit="postToServer()"></registration-form>
    

    并在您的父控制器中,放置提交表单时要执行的任何逻辑:

    $scope.postToServer=function(){
    alert("posting to server");
    }
    

    编辑

    Plunk.

    EDIT 03/02-2014,另一种方法是将指令中的标志传递给父控制器,指示表单是否有效,看看“外部按钮”如何ng-disabled 被挂在 plunk 中(我已经更新了。)

    【讨论】:

    • 我在我的问题中提到过,我的提交按钮不在指令中,它在我的 html 中,请告诉如何在那里禁用它以进行无效的表单验证
    • 我是说更简洁的方法是在指令中处理它。将提交按钮放在指令之外是绝对必要的吗?无论哪种方式,我都更新了我的 plunk 以说明如何实现您想要实现的目标。
    • 如果我在 html 中为各种重复此指令三遍,那么如何在我的 html 中禁用提交按钮,前提是所有三个都填满
    • 创建 3 个单独的变量来负责跟踪每个指令的有效性,然后将每个单独的字段传递给每个指令并将您的 ng-disabled 绑定到 (!validFlag1 || !validFlag2 || !validFlag3)
    • 我将添加 3 次如何做到这一点。对不起,我是初学者
    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2017-04-08
    • 2016-04-06
    • 2013-03-04
    相关资源
    最近更新 更多