AngularJS在HTML中留下注释:是否可以删除它们?
有人知道你是否可以删除html代码中留下的有角度的注释吗 例如:如果我使用ngRepeat,但没有要重复的项目,AngularJS将保留以下内容:AngularJS在HTML中留下注释:是否可以删除它们?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,有人知道你是否可以删除html代码中留下的有角度的注释吗 例如:如果我使用ngRepeat,但没有要重复的项目,AngularJS将保留以下内容: <!-- ngRepeat: post in posts --> 此注释是由ngRepeat执行的元素转换的结果。看起来它几乎是从时间的黎明开始的(从角度来说),并且将在指令要求元素转换时创建 虽然您当然可以通过直接HTML操作来消除它,但这不是一件安全的事情。通读了源代码后,它建议删除原始ngRepeat元素后,继续编译HTML时需要
<!-- ngRepeat: post in posts -->
此注释是由
ngRepeat
执行的元素转换的结果。看起来它几乎是从时间的黎明开始的(从角度来说),并且将在指令要求元素转换时创建
虽然您当然可以通过直接HTML操作来消除它,但这不是一件安全的事情。通读了源代码后,它建议删除原始ngRepeat
元素后,继续编译HTML时需要使用此注释。此外,在v1.2.0中,ngRepeat
,用于确定重复元素的放置位置
总结如下:
- Angular不允许你移除这个
- 您可以手动执行,但很可能会中断
- 要重申这些评论,首先删除这些评论似乎是一个奇怪的要求——根据你这样做的理由,可能会有更好的选择来实现你的目标
$("*").contents().filter(function(){ return this.nodeType == 8;}).remove();
这不是一个正确的修复,但在调试时很方便
$compileProvider.debugInfoEnabled(false);
但是它会破坏一些引用了angular注释的插件。这些注释有什么问题?它们是在客户端通过JavaScript生成的。因此,它们对HTML的下载大小没有影响。你为什么关心他们?你应该希望他们在那里解决问题purposes@JBNizet当您检查DOM时,这是一种视觉污染。它也是一个查看应用程序内部工作的非常方便的窗口。我宁愿用户不能确切地看到为什么某些东西被隐藏,或者如果范围被以某种方式修改,甚至不能看到某些东西被显示出来。换句话说,如果我对某人隐藏了一个删除按钮,我甚至不想让他们知道这个按钮是可用的。所有这些信息不都应该在内存中吗?为什么Angular需要在DOM中保留/放置所有属性和注释?@TheBlackBenzKid没有侮辱,你有什么具体的、事实性的理由来反驳我说的话吗?你真的认为AngularJS在服务器上包含这些注释吗?一点也不奇怪——当使用
内联块
横向显示元素时,注释会在不应该显示的地方造成不必要的空间。“一点也不奇怪请求2”-当你想使用css':empty
选择器时,您的元素将永远不会因为此注释而为空inside@Cherniv不是注释而是内部的空白导致了:empty
的问题,但它仍然是一个有效的原因“根本不是字符串请求3”-当您想要生成最终的HTML而不在类和注释中使用所有ng bind标记时“一点也不奇怪的请求4”-:第一个孩子
,:最后一个孩子
和:第n个孩子
CSS选择器在ng repeat
中基本上是无用的,因为它们也会匹配注释节点。它不会将ng scope
作为类添加到元素中。但这些注释保留在html中。