角度指令复数形式数据验证

时间:2015-11-29 23:18:19

标签: javascript angularjs forms validation

我正在构建一个多部分表单,其中多个指令各自包含多个输入。这些指令都在一个表单中,我将其作为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>

此代码获得&#34;语法错误:令牌&#39; {&#39;不是有效的标识符&#34;错误。 但是,如果我不能在ng-messages中使用双向数据绑定,我如何通过它的名称来验证字段? 因为这个表达式&#34; formName.validationNames.dateName。$ error&#34;显然是不确定的吗?

任何想法?
如果我正在做的事情是严重错误的,你可以提供更好的方式,请随意... 谢谢!

1 个答案:

答案 0 :(得分:0)

你可以完成你想做的事情。

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

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