为什么 ngif 不从我的代码中删除脚本标签?

Why does ngif not remove script tags from my code?

我有几个脚本标签要根据条件删除。在 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;
    }
});