javascript - 使用 ng-messages 验证动态表单

标签 javascript angularjs ng-messages

我正在尝试创建一堆可重用的组件,其中主要是表单控件。

出于这个原因,我相信(也许有不同的方法?)我需要为 ng-form 指令创建动态名称,这样它就不会覆盖另一个 ng-form 在同一范围内。

问题是我无法进行验证,因为表达式不适用于 ng-messages

下面是一个非常简化的演示(对长模板字符串感到抱歉,找不到更好的方法将其添加到 stacksnippets),只有一个指令实例,没有其他父作用域。但在实际场景中,这些都会存在,所以我动态创建表单名称。

angular.module('test', ['ngMessages'])
  .directive('formGroup', function() {
    return {
      scope: {
        classList: '='
      },
      replace: true,
      template: '<div class=\"container\" ng-class=\"classList\" ng-form=\"fg_{{$id}}\"><input type=\"text\" name=\"testInput\" ng-model=\"testValue\"  required><div ng-messages=\"fg_$id.$error\"><p ng-message=\"required\">Something is wrong!<\/p><\/div><\/div>'
    }
  });
div.container {
  height: 100px;
  padding: 5px;
  border: 1px solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.3/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.3/angular-messages.js"></script>
<div ng-app="test">
  <form-group classList="sample-class"></form-group>
</div>

如您所见,我正在使用带有前缀 fg_ 的范围 $id 创建表单名称。但它不像 ng-messages="fg_$id.$error"ng-messages="fg_{{$id}}.$error"抛出错误。

执行此操作的正确方法是什么,或者如果不是,我们该如何解决它?

<小时/>

P.S:我读过 this question 以及一些类似的文章和文章,但没有一个回答这个简单的场景

最佳答案

尝试使用 this['fg_' + $id].$error 作为 ngMessages 指令的参数。

您可以找到正在工作的jsfiddle here .

关于javascript - 使用 ng-messages 验证动态表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579963/

相关文章:

javascript - 使用 d3.js 在 svg 路径元素上绘制文本

javascript - 第二次验证时 ng-messages 和 ui-mask 冲突

javascript - AngularJS ng-message 指令始终显示消息

angularjs - Angular 翻译指令不适用于 ngMessage

javascript - $stateParams 将值转换为字符串

javascript - 如何获取指令中的图像源属性?

javascript - 我怎样才能只获得 jQuery Mobile 1.4.1 结构?

javascript - 在函数外部调用 javascript 函数结果

javascript - 为什么 Angular 2 或 Angular 4 使用香蕉括号?有什么具体原因吗?为什么他们不遵循与 Angular 1 相同的模式?

javascript - Angularjs - 禁用和取消选中复选框