在另一个指令中转换指令时,不会显示验证消息

时间:2014-04-04 05:51:06

标签: angularjs angularjs-directive

为了减少html验证的样板代码,我正在编写两个指令:一个用于模板化,另一个用于验证...两个指令都按预期工作,而angularjs验证类确实附加到无效的输入标签,只有问题我是面对作为模板指令一部分的验证消息不会显示。 PLUNKER LINK

问题似乎与编译子元素的方式有关:

element.replaceWith($compile(template)(scope));

这应该用父元素编译但是如何做到?

1 个答案:

答案 0 :(得分:7)

是的,你是对的,确实问题在于

element.replaceWith($compile(template)(scope));

你在编译它后把元素放在dom上,你正在反向,因此ngmodel不会改变连接本身到父窗体。

你正在做的是:

1. create & compile element
2. place it in dom

因为元素在进入dom之前已经被编译了..它永远不会知道它的父形式,因此不会将自己链接到父元素。

步骤的顺序应该是:

1. create an element, 
2. place it in dom 
3. compile it. // now it will have a chance to hook up to the parent

所以你应该做的是:

   var el =angular.element(template);
   element.replaceWith(el);
   $compile(el)(scope);

检查plunker链接:http://plnkr.co/edit/hwyuuzeAnu5oBQqmmpR3?p=preview