如何使用Angular加载脚本异步

时间:2017-10-05 13:29:47

标签: javascript jquery angular

由于我对Angular和jQuery的混合有一些不好的经验,我试图避免Angular中的jQuery。现在,我应该为我的Angular项目添加一些代码,但我不确定如何转换它。代码来自希望我在项目中实现此功能的其他人。

在我的项目中,我已将所有必需的库添加到index.html中。我认为这是唯一可以添加库的地方。

有人知道(如果有办法)如何将这些jquery代码行转换为Angular或javascript代码?在项目中我应该添加这个?

$('head').append( '<meta name="PAGENAME" content="$pagename">' );

$(document).ready(function() {

    $.getScript( "https://www.website.com/crsc/scripts/script.js" )
      .done(function( script, textStatus ) {
        console.log( 'loaded test' );
      })

      .fail(function( jqxhr, settings, exception ) {
               console.log('not loaded');     
      });

});

1 个答案:

答案 0 :(得分:3)

您可以使用app.run,它会在应用加载所有内容之前像main method一样运行

     app.run(["scriptService"],function(scriptService){
        scriptService.GetScripts()
          .then(function(success){console.log("loaded test");},
         function(error){ console.log("not loaded");}
    }]);

接下来你需要做的就是制作一个脚本服务。

    app.factory("scriptService", ["$http", function ($http) {
                this.GetScripts = function ()
    { 
return $http.get(""https://www.website.com/crsc/scripts/script.js") .then(function(result) { return result});

    }

但实际上为什么你不只是通过脚本标签导入脚本? 加载脚本async,因为op不知道这是一个选项我想我会把它包含在这里ww3 schools async loading

  <script src="demo_async.js" async></script>
  

定义和用法async属性是一个布尔属性。

     

如果存在,则指定将执行脚本   一旦可用就异步。

     

注意:async属性仅适用于外部脚本(并且应该   仅在存在src属性时使用。)

     

注意:有几种方法可以执行外部脚本:

     

如果存在异步:脚本与异步执行   页面的其余部分(脚本将在页面继续时执行   解析)如果不存在异步并且存在延迟:脚本   在页面完成解析时执行如果既不是异步也不是   延迟存在:脚本被提取并立即执行,   在浏览器继续解析页面浏览器支持之前   表中的数字指定完全的第一个浏览器版本   支持该属性。