AngularJS在HTML中留下评论:是否可以删除它们?

pop*_*joe 52 angularjs angularjs-directive

有谁知道你是否可以删除html代码中留下的角度注释?

例如:如果我使用ngRepeat并且没有要重复的项目,AngularJS会离开:

<!-- ngRepeat: post in posts -->
Run Code Online (Sandbox Code Playgroud)

And*_*ger 36

此评论是由执行元素转换的结果ngRepeat.看起来像它已经发生了,因为黎明的时间近(在角度而言)和每当指令要求的元件transclusion将被创建.

虽然你肯定可以通过直接的HTML操作来消除它,但这不是一件安全的事情.阅读完源代码后,它建议在ngRepeat删除原始元素后继续编译HTML需要此注释.此外,在v1.2.0中,ngRepeat 添加了更多用于确定重复元素放置位置的注释.

总结一下:

  • Angular不允许你删除它
  • 你可以手动完成,但你最有可能打破角度
  • 为了重申这些评论,首先删除此评论似乎是一个奇怪的请求 - 取决于您这样做的理由,您可能会有更好的选择.

  • 根本不是一个奇怪的请求 - 当使用`inline-block`横向显示元素时,注释会导致不需要显示空间的空间. (43认同)
  • "根本不是一个奇怪的请求2" - 当你想使用css'`:empty`选择器时,你的元素永远不会是空的,因为里面的这个注释 (20认同)
  • "根本不是字符串请求3" - 当您想要在类和注释中生成没有所有ng-bind标记的最终HTML时 (4认同)
  • @Cherniv这不是评论,但内部的空白导致问题`:empty`但它仍然是一个有效的理由 (3认同)
  • "根本不是一个奇怪的请求4" - `:first-child`,`:last-child`和`:nth-​​child` CSS选择器被排除在`ng-repeat`内基本无用,因为它们也会匹配评论节点.. (3认同)
  • 我应该早点解决这个问题 (3认同)

Mik*_*ser 7

在您的开发控制台中运行此命令以查看注释:

$("*").contents().filter(function(){ return this.nodeType == 8;}).remove();
Run Code Online (Sandbox Code Playgroud)

不是一个适当的修复,但调试时方便的代码片段.