AngularJS: ng-include 内で Angular ロード スクリプトを作成するにはどうすればいいですか? 質問する

AngularJS: ng-include 内で Angular ロード スクリプトを作成するにはどうすればいいですか? 質問する

こんにちは、AngularでWebページを作成しています。問題は、Angularなしですでに構築されているものがあり、それらも含める必要があることです。

問題はこれです。

main.html に次のような内容があります:

<ngInclude src="partial.html">
</ngInclude>

そして、私のpartial.htmlには次のような内容があります

<h2> heading 1 <h2>
<script type="text/javascript" src="static/js/partial.js">
</script>

そして、私の partial.js は angularjs とは何の関係もありません。nginclude は動作し、HTML は表示されますが、JavaScript ファイルが読み込まれているのはまったく表示されません。firebug/chrome-dev-tool の使い方はわかっていますが、ネットワーク リクエストが実行されていることすら表示されません。何が間違っているのでしょうか?

Angular にはスクリプト タグに対して特別な意味があることは知っています。これをオーバーライドできますか?

ベストアンサー1

受け入れられた回答は1.2.0-rc1+では機能しません(Githubの問題)。

簡単な修正方法は以下をご覧くださいエンドドラマ:

/*global angular */
(function (ng) {
  'use strict';

  var app = ng.module('ngLoadScript', []);

  app.directive('script', function() {
    return {
      restrict: 'E',
      scope: false,
      link: function(scope, elem, attr) {
        if (attr.type === 'text/javascript-lazy') {
          var code = elem.text();
          var f = new Function(code);
          f();
        }
      }
    };
  });

}(angular));

このファイルを追加し、ngLoadScriptモジュールをアプリケーションの依存関係としてロードし、type="text/javascript-lazy"部分的に遅延ロードするスクリプトのタイプとして使用します。

<script type="text/javascript-lazy">
  console.log("It works!");
</script>

おすすめ記事