Angularjs 为什么ngif不从我的代码中删除脚本标记?
我有几个脚本标签,我想删除的条件。在DOM中,我看到它们不存在(它们被注释掉了),但我仍然看到控制台从它们中喷出。脚本标记是否已加载?如果是这样,有没有人对此有任何解决办法Angularjs 为什么ngif不从我的代码中删除脚本标记?,angularjs,angular-ui-router,angular-meteor,Angularjs,Angular Ui Router,Angular Meteor,我有几个脚本标签,我想删除的条件。在DOM中,我看到它们不存在(它们被注释掉了),但我仍然看到控制台从它们中喷出。脚本标记是否已加载?如果是这样,有没有人对此有任何解决办法 <script ng-if="myCondition" src="blah blah.js"></script> 它们是否被移除并不重要。到angular引导并开始DOM操作时,浏览器将编译所有脚本标记 删除脚本标记不会删除已编译的代码 如果没有更多关于您要完成什么或脚本做什么的信息,这就是目前可以
<script ng-if="myCondition" src="blah blah.js"></script>
它们是否被移除并不重要。到angular引导并开始DOM操作时,浏览器将编译所有脚本标记 删除脚本标记不会删除已编译的代码 如果没有更多关于您要完成什么或脚本做什么的信息,这就是目前可以提供的所有信息
我建议您阅读有关html编译到DOM时浏览器如何处理网页的基本知识。当它遇到带有
src
的脚本标记时,会对该文件发出请求,并且无法截获该文件 作为一种解决方法,您可以手动插入脚本,如下所示:
function loadScript() {
var $script = document.createElement('script');
$script.src = 'blah blah.js';
$script.id = 'someId';
document.body.appendChild($script);
}
$rootScope.watch(myCondition, function(value) {
if(myCondition && !document.getElementById('someId') {
loadScript();
isScriptInserted = true;
}
});
谢谢我试图保留通用代码(一个页面有脚本标签,另一个没有),我想我的基本原理出了问题。这帮了大忙!