2016-08-25 21 views
0

私のDOMが角度の世界の外側に動的に追加されるアプリケーションを構築しています。 jQueryとそのためのjavascriptも動的に読み込まれます。私はangular.injectorメソッドとスコープから$ compileを取得し、$ compileサービスを使用しました。しかし、これで私の指示とコントローラは実行されません。私はそれらが私のアプリに追加されているのを見るが、コントローラはまだ起動していない。動的にロードされた角度のjavascriptが動作しない

のindex.htmlが

<html> 
<head> 
    <script data-require="[email protected]" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="https://code.angularjs.org/1.5.8/angular.js"></script> 
    <script src="script.js"></script> 
</head> 
<body> 
    <div ng-app="test"> 
    <div id="main"> 

    </div> 
    </div> 
    <!--<script src="https://googledrive.com/host/0ByYZbKdhSDoSeFNQVGdEd2k3amM/direc.js"></script>--> 
</body> 
</html> 

script.js

//Create angular module 
angular.module("test",[]); 

$(document).ready(function(){ 
    //Load dynamically the JS 
    $.getScript('https://googledrive.com/host/0ByYZbKdhSDoSeFNQVGdEd2k3amM/direc.js', function(){ 
    angular.element($("#main")[0]).scope().$root.$apply(); 
    }); 
    var scrip = "<script src=\"https://googledrive.com/host/0ByYZbKdhSDoSeFNQVGdEd2k3amM/direc.js\"></script>" 
    var htmlStr = "<span test-drective=\"test-drective\">Test</span>"; 
    $("#main").append(angular.element('*[ng-app]').injector().get("$compile")(htmlStr)(angular.element($("#main")[0]).scope().$new(true))); 
}) 

とdirec.js私はindex.htmlの中direc.jsを追加する場合は、すべて、

angular.module("test") 
.directive("testDrective", function(){ 
    return { 
     restrict: 'A', 
    controller: function($scope) { 
      console.log("Controller") 
     }, 
     link: function(scope, elem, attrs) { 
      console.log("link") 
     } 
    }; 
}) 

ですjqueryを使ったスクリプトの動的ロードやDOMの一部として追加されたものではうまく動作しません。

サンプルアプリ: https://plnkr.co/edit/gekifqGzJDAsWs5OF4ro

答えて

0

あなたのロードが完了し、あなたのDOMはすべて一般に

bootstraping angularセクション「手動の初期化」を参照してください

angular.bootstrap(document, ['myApp']);準備ができているされた後のコードであなたの角度アプリをブートストラップしよう角度アプリのjavascriptコードがクライアントに存在している必要があります。また、DOMの外部ディレクティブを操作しないでください。多分この ng-bind-html-compile directiveはあなたの問題をより角度をもって解決するのに役立ちます

関連する問題