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

时间:2016-02-08 07:26:11

标签: angularjs angular-ui-router angular-meteor

我想在条件下删除一些脚本标记。在DOM中,我看到它们不存在(它们被注释掉了),但我仍然看到控制台从它们中喷出来。是否加载了脚本标签?如果是这样,有没有人为此做任何解决方法?

<script ng-if="myCondition" src="blah blah.js"></script>

2 个答案:

答案 0 :(得分:5)

如果将它们删除也没关系。当角度引导并启动DOM操作时,所有脚本标记都将由浏览器编译。

删除脚本标记不会删除已编译的代码。

如果没有更多关于你想要完成什么的信息,或者脚本做了什么,这就是现在可以提供的所有信息。

我建议您阅读有关如何在html编译到DOM时浏览器处理网页的基础知识。它遇到带有src的脚本标记的瞬间,就会对该文件发出请求,并且无法拦截它。

答案 1 :(得分:0)

作为一种解决方法,您可以手动插入脚本,如下所示:

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;
    }
});