search

Home  >  Q&A  >  body text

angular.js - 很简单的一个angularjs入门级demo,但是报错了。

本人初学angularjs,在看一本书的《angularjs 权威教程》,第二章有个demo,如下。

这里使用angular版本1.2.29,如果换成1.3.1 会报错。

请问,这是如何造成的呢?应该怎么样调试这个错误呢?

<!doctype html> 
<html ng-app> 
<head> 
    <meta charset="utf-8"> 
    <title>Simple App</title> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.29/angular.min.js"></script>
</head>
<body>
    <p ng-controller="MyController">
        <h1>Hello {{clock}}</h1>
    </p>
    
    <script type="text/javascript">
        function MyController($scope, $timeout) {
            $scope.clock = new Date();
            var updateClock = function() {
              $scope.clock = new Date();
            };
            setInterval(function() {
              $scope.$apply(updateClock);
            }, 1000);
            updateClock();
      };
    </script>
</body>
</html>
PHP中文网PHP中文网2744 days ago492

reply all(2)I'll reply

  • 迷茫

    迷茫2017-05-15 16:58:52

    After version 1.3, controllers are no longer found on the window object $controller will no longer look for controllers on window.

    https://github.com/angular/angular.js/blob/master/CHANGELOG.md#breaking-changes-31

    <!DOCTYPE html>
    <html ng-app="app">
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
     <p ng-controller="MyController">
            <h1>Hello {{clock}}</h1>
        </p>
        
        <script type="text/javascript">
         (function(){
            angular.module("app", []).controller("MyController", MyController);
          
             
            MyController.$inject = ['$scope', '$timeout'];
           
            function MyController($scope, $timeout) {
                $scope.clock = new Date();
                var updateClock = function() {
                  $scope.clock = new Date();
                };
                setInterval(function() {
                  $scope.$apply(updateClock);
                }, 1000);
                updateClock();
           }
         })();
        </script>
    </body>
    </html>

    The JS Bin
    http://jsbin.com/vekixa/edit?html,console,output

    If you cannot circumvent the wall, please change the CDN inside the wall

    reply
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:58:52

    It is recommended that the poster follow up to version 1.4 (version is really important)

    <!doctype html> 
    <html ng-app> 
    <head> 
        <meta charset="utf-8"> 
        <title>Simple App</title> 
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js"></script>
    </head>
    <body>
        <p ng-controller="MyController">
            <h1>Hello {{clock}}</h1>
        </p>
        
        <script type="text/javascript">
            function MyController($scope, $timeout) {
                $scope.clock = new Date();
                var updateClock = function() {
                  $scope.clock = new Date();
                };
                setInterval(function() {
                  updateClock();
                }, 1000);
          };
        </script>
    </body>
    </html>
    

    Just like this. . Of course you can also write

    <!doctype html> 
    <html ng-app> 
    <head> 
        <meta charset="utf-8"> 
        <title>Simple App</title> 
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js"></script>
    </head>
    <body>
        <p ng-controller="MyController">
            <h1>Hello {{updateClock()}}</h1>
        </p>
        
        <script type="text/javascript">
            function MyController($scope, $timeout) {
                $scope.updateClock = function() {
                 return new Date();
                };
                setInterval(function() {
                  updateClock();
                }, 1000);
          };
        </script>
    </body>
    </html>
    

    reply
    0
  • Cancelreply