【问题标题】:angular directive complex form data validation角度指令复杂表单数据验证
【发布时间】:2016-03-03 12:58:19
【问题描述】:

我正在构建一个多部分表单,其中多个指令每个都包含多个输入。这些指令都在一个表单中,我将其名称作为 attr 传递给指令隔离范围。有了它,我传递了一个带有输入名称的对象,以使用 ng-messages 进行验证。现在..这个表格很大,所以我在这里只发布一个小例子,

问题 - 输入获得了我想要的名称,但我似乎无法访问 ng-messages 的表单名称属性...

 here is my main form:  (it has a couple of these directives in it...)
  <form  name="flightsForm" ng-show="formStagesArr[1]" novalidate>

    <flight-form 
        ng-model="formObject.flight.outboundSec"
        form-name="flightsForm"
        validation-names="outSecValidation"
        >
   </flight-form>

 </form>

这是我创建 outSecValidation 对象的主要范围:

 $scope.outValidation = {
       "dateName":'outDate' 
 }

这是我返回的 DDO 的飞行形式指令:

 return {
            restrict: 'EA' ,
            controller: 'flightFormCtrl' ,
            require : 'ngModel',
            scope: {
                 ngModel: '=',
                 formName: '=',
                 validationNames: '='
            },
            link: function(scope , elem , attrs){
            },
            templateUrl:templateUrl
   }

这是我的模板:

 <md-contect>
        <md-datepicker 
            name="{{validationNames.dateName}}" 
            ng-model="ngModel.date"
            md-placeholder="{{ngModel.ArrOrDep}}"
            required>
        </md-datepicker>
    </md-contect>

    <div class="validation-messages" 
     ng-messages="formName.{{validationNames.dateName}}.$error">
    <div ng-message="required">field required</div>
    </div>

此代码出现“语法错误:令牌 '{' 不是有效标识符”错误。 但是如果我不能在 ng-messages 中使用两种方式的数据绑定,我该如何通过它的名称来验证该字段? 因为这个表达式“formName.validationNames.dateName.$error”显然是未定义的吧?

有什么想法吗?
如果我正在做的事情严重错误,您可以提供更好的方法,请随意.. 谢谢!

【问题讨论】:

    标签: javascript angularjs forms validation


    【解决方案1】:

    只要这样做,你就可以完成你想要的。

    <div class="validation-messages"  ng-messages="formName[validationNames.dateName].$error"> 
    

    但是,您真的需要将validationNames 传递给指令吗?不应该更简单只是传递输入的名称吗?我在此类对象的模板中看不到任何用途。这也有点令人困惑,因为看起来您的模板只处理一种类型的输入,即“日期名称”。无论如何,我希望我能回答你的问题。

    【讨论】:

    • 谢谢它的工作......是的,我知道从这个例子中它看起来没有必要,但每个指令都有 20 -30 个输入,然后我在表单周围使用了 4 次......所以我不得不创造一种方式让指令动态验证。
    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多