2016-08-02 11 views
0

私は最近、角度jsを学習すると述べています。私を助けてください。 要求時に角度指示をロードしてコンパイルしようとしています(onclick)。ここでディレクティブ・ファイル(mydiv.js)が、mydiv.jsファイルがコンパイルされていません。.. は私のコード..です要求時に角度指示を読み込んでコンパイルする

index.html 

<html> 
<head> 
<script src="jquery.min.js"></script> 
<script src="angular.js"></script> 
<script type="text/javascript" src="app.js"></script> 
</head> 

<body> 
<div ng-app="app"> 
<button type="button" onclick="disply_directive()">Click</button> 
<my-directive ng-init="init()"></my-directive> 
</div> 
</body> 
</html> 

app.js 

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

var disply_directive = function() { 
load_scripts('mydiv.js'); 
} 

var load_scripts = function(url) { 
if (url) { 
var script = document.querySelector("script[src*='"+url+"']"); 
if (!script) { 
var heads = document.getElementsByTagName("head"); 
if (heads && heads.length) { 
var head = heads[0]; 
if (head) { 
script = document.createElement('script'); 
script.setAttribute('src', url); 
script.setAttribute('type', 'text/javascript'); 
head.appendChild(script); 
}}} 
return script; 
}}; 

mydiv.js 

app.directive('myDirective', function ($http) { 
return { 
template: '<h1>Hello World!</h1>', 
strict: 'E', 
link: function(scope) { 
}, 
controller: function($scope) { 
$scope.init = function() { 
alert("Hello World!"); 
console.log("Hello World!"); 
}; 
} 
}; 
}); 

ここで私は、index.htmlの中mydiv.js srcを追加していませんよ... ボタンをオンクリックすると、jsファイルがロードされますが、表示されません。コードを変更する必要があります。

答えて

0

You sho uldは、onclick()を呼び出すのではなく、index.htmlファイルにmydiv.jsファイルを含める必要があります。

<html> 
<head> 
<script src="jquery.min.js"></script> 
<script src="angular.js"></script> 
<script type="text/javascript" src="app.js"></script> 
<script type="text/javascript" src="path_to_file/mydivjs"></script> 
</head> 

<body> 
<div ng-app="app"> 
<button type="button" onclick="disply_directive()">Click</button> 
<my-directive ng-init="init()"></my-directive> 
</div> 
</body> 
</html> 
+0

は、それがindex.htmlの中に含まれていますならば、mydev.jsファイルはなりますが、実際に私はオンデマンドでディレクティブをロードしようとしている、リプレイをありがとうページの読み込み時にのみロードされ、私はそれを避けようとしています.. –

0

私はoclazyload使用して解決策を得た - デマンド(遅延ロード)のロード・モジュールを、 here is myplunker

参照:https://oclazyload.readme.io/docs

ありがとう...

関連する問題