无法在没有jquery的情况下正确加载外部脚本

时间:2016-02-14 16:22:43

标签: javascript jquery html angularjs

我试图根据条件在另一个指令中延迟加载指令。我有一个主要指令,其中有一个<script>标签。只有当jquery存在时,included指令才能正确加载,问题是我的所有页面都没有加载jquery。还有第二个警告......

  

主线程上的同步XMLHttpRequest已弃用。

如果我找到一种纯粹的angularJs加载脚本的方式,我应该能够抑制它。

这是我的设置

<my-directive>
    <script ng-if="expression" src="../path" type="application/javascript"></script>
</my-directive>

非常简单,但只有在加载jquery时它才有效。我尝试通过$http.get()请求然后eval()(我知道危险)加载它,但这不起作用。

1 个答案:

答案 0 :(得分:1)

这是一种利用D3DXMatrixTranslation(&translation, 0, 0, 5); matPosition = inverse(matRotate) * translation * matRotate * matPosition; cBuffer.Final = matScale * matRotate * matPosition * matView * matProjection; 方法的方法。您可以创建一个指令,为此功能扩充$http标记,检查已定义的<script>属性。您当然可以根据需要修改此检查。请注意以下内容......

type
app.directive('script', function($http) {
    return {
        restrict: 'E',
        scope: false,
        link: function(scope, elem, attrs) {
            if (attrs.type === 'text/javascript-lazy') {
                $http.get(attrs.src).then(function(response) {
                    var code = response.data;
                    var f = new Function(code);
                    f();
                });
            }
        }
    };
});

这也适用于元素包装指令。

Plunker - 工作演示