未捕获的ReferenceError:未定义angular - AngularJS无法正常工作

Cal*_*r99 48 javascript button angularjs angularjs-directive

我正在尝试学习角度,我正在努力点击一个简单的按钮.
我按照一个示例,它具有与下面相同的代码.

我正在寻找的结果是单击按钮以引发警报.但是,按钮单击没有响应.有人有什么想法吗?

<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>
Run Code Online (Sandbox Code Playgroud)

m59*_*m59 73

您需要将角度应用程序代码移动到包含角度库的下方.在你的角度代码运行时,angular它还不存在.这是一个错误(请参阅您的开发工具控制台).

在这一行:

var app = angular.module(`
Run Code Online (Sandbox Code Playgroud)

您正在尝试访问名为的变量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>
Run Code Online (Sandbox Code Playgroud)

为了完整起见,你的指令确实类似于现有的指令ng-click,但我相信这个练习的目的只是练习编写简单的指令,这是有道理的.


jki*_*ead 5

使用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'); };
  };
};
Run Code Online (Sandbox Code Playgroud)

请注意,my-directive在此示例中您不需要alertFn在当前作用域上绑定某些内容.

更新:您还希望在<script>块之前加载角度库.