Javascript 如何使用自定义角度指令加载脚本?

Javascript 如何使用自定义角度指令加载脚本?,javascript,angularjs,Javascript,Angularjs,我正在尝试在自定义角度指令中加载脚本。现在,它只是在DOM中添加脚本标记,但并没有加载它 angular.module('myApp') .directive('rjHeader', function () { return { restrict: 'E', template : function(e,a){ return '<script type="text/javascript" charset="utf-8" src="h

我正在尝试在自定义角度指令中加载脚本。现在,它只是在DOM中添加脚本标记,但并没有加载它

angular.module('myApp')
  .directive('rjHeader', function () {
    return {
      restrict: 'E',
       template : function(e,a){
           return '<script type="text/javascript" charset="utf-8" src="https://my.web.com/path/' + a.locale + '/some.js" ></script>';  
        }
    };
  });
angular.module('myApp')
.directive('rjHeader',function(){
返回{
限制:'E',
模板:函数(e,a){
返回“”;
}
};
});

和html格式

<div rj-Header locale="en_US"></div>


在浏览器中打开页面时,会正确添加所需的脚本

<script type="text/javascript" charset="utf-8" src="https://my.web.com/path/en_US/some.js" ></script> 


但这实际上并没有加载这个.js文件。如果我简单的复制粘贴这一行到我的html,然后它的工作预期。如何使用自定义angular指令插入脚本?

此处似乎有点错误,但如果您真的想这样做,可以在指令的元素中附加一个脚本标记:

app.directive('loadDirective', function() {
  return {
    restrict: 'E',
    link: function($scope, $el) {

      var script = document.createElement('script');
      script.src = '//cdnjs.cloudflare.com/ajax/libs/emojione/1.3.0/lib/js/emojione.min.js'
      $el.append(script);
    }
  }
});

另外,您是否尝试过ng include?up投票,因为指令能够在少数情况下(并非总是)注入脚本非常有用。一种情况是一个独立的自打包指令。是的,经过几次尝试后,我得出了相同的解决方案,但我想知道为什么如果按模板加载脚本,会得到SyntaxError:unterminated string Literal确定我会采用这种方法吗?你说“这里似乎有点不对劲”是什么意思?@RakeshJuyal在指令中加载一个脚本标记感觉很奇怪,因为有很多其他方法可以在页面上获取JS(RequireJS、Curljs,只是在vanilla JS中)。也就是说,我不熟悉您的用例,所以这种感觉可能是没有根据的。