私はangularを学ぼうとしていますが、ボタンをクリックするだけで苦労しています。
以下のコードと同一のコードを持つ例に従いました。
私が探している結果は、ボタンをクリックしてアラートを発生させることです。ただし、ボタンのクリックに対する応答はありません。誰かアイデアはありますか?
<html lang="en" ng-app="myApp" >
<head>
<meta charset="utf-8">
<title>My AngularJS App</title>
<link rel="stylesheet" href="css/app.css"/>
</head>
<body>
<div >
<button my-directive>Click Me!</button>
</div>
<script>
var app = angular.module('myApp',[]);
app.directive('myDirective',function(){
return function(scope, element,attrs) {
element.bind('click',function() {alert('click')});
};
});
</script>
<h1>{{2+3}}</h1>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-->
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/directives.js"></script>
</body>
</html>
angularアプリコードをangularライブラリのインクルードの下に移動する必要があります。 angularコードの実行時には、angular
はまだ存在していません。これはエラーです(開発ツールコンソールを参照)。
この行では:
var app = angular.module(`
angular
という変数にアクセスしようとしています。その変数が存在する原因を検討してください。これは、angular.jsスクリプトにあり、最初に含める必要があります。
<h1>{{2+3}}</h1>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-->
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/directives.js"></script>
<script>
var app = angular.module('myApp',[]);
app.directive('myDirective',function(){
return function(scope, element,attrs) {
element.bind('click',function() {alert('click')});
};
});
</script>
完全を期すために、ディレクティブは既存のディレクティブng-click
に似ていますが、この演習の目的は単純なディレクティブの作成を練習することだけであると考えています。
ng-click
ディレクティブを使用します。
<button my-directive ng-click="alertFn()">Click Me!</button>
// In <script>:
app.directive('myDirective' function() {
return function(scope, element, attrs) {
scope.alertFn = function() { alert('click'); };
};
};
この例ではmy-directive
は必要なく、現在のスコープでalertFn
をバインドするために何かが必要なことに注意してください。
更新:angularライブラリも<script>
ブロックの前にロードする必要があります。
問題が解決した後、HTMLコードに以下の行を追加するのを忘れました。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.js"></script>
angular.module
(angle.jsファイルで宣言されていることを知っているので、angular.moduleにアクセスする前に、<script src="lib/angular/angular.js"></script>
(あなたの場合)を使用して使用可能にしておく必要があります。その後、angular.module
を呼び出すことができます。
好む
<html lang="en">
<head>
<meta charset="utf-8">
<title>My AngularJS App</title>
<link rel="stylesheet" href="css/app.css"/>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
-->
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/directives.js"></script>
<script>
var app = angular.module('myApp',[]);
app.directive('myDirective',function(){
return function(scope, element,attrs) {
element.bind('click',function() {alert('click')});
};
});
</script>
</head>
<body ng-app="myApp">
<div >
<button my-directive>Click Me!</button>
</div>
<h1>{{2+3}}</h1>
</body>
</html>