【问题标题】:Angular Custom Form Validation and DirectivesAngular 自定义表单验证和指令
【发布时间】:2013-03-13 23:08:46
【问题描述】:

我有一个自定义验证指令,我将其归因于表单

<form myValidations>

app.directive('myValidations', function(){
return{
    //require: 'ngModel', note its commented out

    link: function(s,e,a,ctrl){//note the emphasis on the ctrl


    }
}
});

如果我没有'require: ngModel'来为我做这件事,我将如何处理这个 ctrl.$parsers。

我可以找到一个元素,然后在某个函数中调用它的 ng-model 以返回一个 ng-model-controller 吗?这样我就可以从那里#$parsers?

【问题讨论】:

  • 你能提供一个带有相关代码的jsfiddle吗?

标签: javascript forms validation angularjs customvalidator


【解决方案1】:

回答您的问题,您可以致电angular.element('elementSelector').controller('ngModel')。它将以与 require 相同的方式返回 ngModel。

问题是:如果您正在创建一个新指令,为什么不使用它的 require 功能?很有可能您没有为您的问题使用正确的解决方案。因此,更多的代码将使我们有机会进一步启发您的问题。

【讨论】:

  • 谢谢,你太棒了,好吧,我需要在一个验证器指令中包含所有内容,所以我需要在多个 ng-model 上执行 $parsers,所以我假设需要一个只能在我归因于指令的整个表单上执行 .controller 。谢谢。
  • 您的验证是否将所有字段都考虑在内?还是对所有字段都一样?对于第一种情况,您可以创建一个适用于form 的指令并使用name property 公开所有子控件。对于后者,您可以创建一个不可知的指令,将$parser 添加到它适用的元素。
  • 个别地,我正在检查个别输入,这些输入需要自己的控制器。对于这项任务,我被要求将整个验证命名为一个指令。
  • 第二个问题是,有没有办法从控制器或指令中 grep ng:show param "form.username.$error"?
  • 还补充了您的答案,我注意到的一个问题是,如果您不导入 jquery,jqlite 将无法正确执行 .find (id 和 class) 和 .controller 如果该表单由带有选择无线电和输入的复杂 div 组成。我相信您是 Angular 方面的大专家,您能验证一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2017-05-26
  • 2014-03-07
相关资源
最近更新 更多