如何编写一个封装模板中输入的角度自定义指令?

时间:2014-09-30 20:58:18

标签: javascript angularjs

我正在尝试编写一个角度指令,它基本上会输出标签和输入以及验证码。当我这样做时,我会发现奇怪的行为。

首先,对于我的测试用例,我已经硬编码了我的指令,将ng-minlength放在输入上。当我这样做时,出于某种原因,模型不会绑定。如果我将其取下,它将正确绑定。

其次,我已将name属性设置为custom指令中指定的属性。这可以防止错误处理工作。

在这篇文章中,我举了一个例子:

http://plnkr.co/edit/BGxB5fENL5L6G7FcvPR5?p=preview

  • Label1 - 演示name属性的编码方式如何导致错误处理工作。它还演示了如何包含ng-minlength导致模型值不受约束。
  • Label2 - 证明删除ng-minlength将允许绑定模型值。
  • Label3 - 证明动态绑定name属性会导致错误处理中断。

非常感谢任何帮助。我希望我只是遗漏了一些简单的东西,但我似乎无法找到如何做到这一点的任何好例子。

1 个答案:

答案 0 :(得分:1)

清空无效字段

根据这个https://groups.google.com/forum/#!topic/angular/fsvIhzEPvuA,你得到了ng-minlength的预期行为。如果初始值导致ng-minlength的验证错误,则ng-minlength将其返回为undefined。 (这解释了标签1和2没有价值的字段的问题)

缺少动态输入名称的验证信息

标签2和3的问题在于,angular不支持使用动态元素名称进行验证。看起来这是一个人们正在考虑的问题,并试图让角度做些什么。这里有更多的信息和工作:

AngularJS: Fields added dynamically are not registered on FormController

(这应该解释标签字段2和3中缺少验证信息的问题)