带有验证的AngularJS指令模板,ngModel和ngClass仅在包装模板时有效

时间:2013-08-30 22:25:22

标签: angularjs angularjs-directive

使用Misko's answer作为模板,我实现了一个指令,为twitter bootstrap表单控件提供模板。

这个Plunker example有两个相同的指令,除了第一个指令在模板中有一个额外的div包装器。

为什么'has-error'类仅适用于第一个指令而不适用于第二个指令? 如果我将包装div添加到第二个指令模板,它会突然开始工作。这个包装器有什么意义?

我还看到验证类ng-pristine ng-invalid ng-invalid-required等正确应用于表单元素,但也是指令模板中的顶级div,为什么会这样?

1 个答案:

答案 0 :(得分:3)

猜测是什么问题 - Angular正在向第一个包装div添加验证类。在第一个中,这个只是一个空包装器,额外的验证类不会导致任何问题。第二个已经在第一个包装器div中同时具有class和ng-class属性,并且Angular添加验证类会覆盖或与ng-class规则冲突,导致它们无法运行并且不会应用“has-error”。我不确定是否有更好的解决方案,而不仅仅是保留包装器div。