Uncaught ReferenceError: angulaire n'est pas défini – AngularJS ne fonctionne pas

Je tente d'apprendre angulaire et je suis en difficulté avec un simple clic de bouton. J'ai suivi un exemple qui a un code identique comme ci-dessous. Le résultat que je recherche est pour appuyer sur le bouton pour provoquer une alerte. Cependant, il n'y a pas de réponse au clic de bouton. Est-ce que quelqu'un a des idées?

<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> 

Vous devez déplacer votre code d'application angulaire sous l'inclusion des bibliothèques angulaires. Au moment où votre code angulaire fonctionne, l' angular n'existe pas encore. Ceci est une erreur (voir la console de vos outils de développement).

Dans cette ligne:

 var app = angular.module(` 

Vous tentez d'accéder à une variable appelée angular . Considérez ce qui fait que cette variable existe. Cela se trouve dans le script angular.js qui doit ensuite être inclus en premier.

  <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> 

Pour l'exhaustivité, il est vrai que votre directive est similaire à la directive déjà existante ng-click , mais je crois que le but de cet exercice est simplement de pratiquer l'écriture de directives simples, ce qui est logique.

Utilisez la directive 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'); }; }; }; 

Notez que vous n'avez pas besoin de my-directive dans cet exemple, vous avez juste besoin de quelque chose pour lier alertFn sur la portée actuelle.

Mise à jour : Vous souhaitez également que les bibliothèques angulaires soient chargées avant votre bloc <script> .

Juste pour compléter la réponse correcte de m59 , voici un jsfiddle de travail:

 <body ng-app='myApp'> <div> <button my-directive>Click Me!</button> </div> <h1>{{2+3}}</h1> </body>