没有DOM存在的AngularJs元素指令

时间:2014-10-30 14:56:47

标签: angularjs

隐藏元素的问题仍然会影响css选择器的布局流程,例如:first-child。我希望将我的指令声明为元素restrict: 'E',不产生破坏性DOM元素并创建自己的隔离范围。这可以通过生成注释来挂起指令范围以某种方式完成吗?您似乎不允许拥有使用单个评论的模板。

我想使用此指令能够根据需要有条件地生成并显示DOM内容。并且在不需要时,没有DOM存在。例如,我有一个使用ng-repeat的list指令,并用div容器包装。如果列表中没有要显示的项目,我希望整个div计数器不存在。

避免使用:first-child是可能的,但似乎是一种笨重的解决方法。更一般地说,它似乎是一个有用和有效的功能,能够放置E' E'您的页面中的指令知道它们的位置,但在需要之前不要进入DOM。我很惊讶这不是一个更需要的功能。

1 个答案:

答案 0 :(得分:0)

我找到了一个简单而令人满意的答案。执行ng-if和其他操作,创建注释元素,将其作为占位符插入,然后删除原始指令。这样,该指令没有DOM可见的存在,并且不会干扰css类,但是在它需要插入或修改DOM的事件中仍然知道它的位置。