Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 布拉德·格林的第一个例子';"一书";AngularJS“;他犯了一个错误_Javascript_Angularjs - Fatal编程技术网

Javascript 布拉德·格林的第一个例子';"一书";AngularJS“;他犯了一个错误

Javascript 布拉德·格林的第一个例子';"一书";AngularJS“;他犯了一个错误,javascript,angularjs,Javascript,Angularjs,它看起来很简单,但不起作用: <html ng-app> <head> <script type="text/javascript" src="lib/angular.js"></script> <script type="text/javascript"> function HelloController($scope) { $scope.greeting = { text: 'Hell

它看起来很简单,但不起作用:

<html ng-app>
  <head>
    <script type="text/javascript" src="lib/angular.js"></script>
    <script type="text/javascript">
      function HelloController($scope) {
        $scope.greeting = { text: 'Hello' };
      }
    </script>
  </head>
  <body>
    <div ng-controller='HelloController'>
      <p>{{greeting.text}}, World</p>
    </div>
  </body>
</html>
在控制台中:

    Error: [ng:areq] Argument 'HelloController' is not a function, got undefined
http://errors.angularjs.org/1.3.0/ng/areq?p0=HelloController&p1=not%20a%20function%2C%20got%20undefined
    at http://localhost:8080/lib/angular.js:80:12
    at assertArg (http://localhost:8080/lib/angular.js:1610:11)
    at assertArgFn (http://localhost:8080/lib/angular.js:1620:3)
    at http://localhost:8080/lib/angular.js:8319:9
    at http://localhost:8080/lib/angular.js:7496:34
    at forEach (http://localhost:8080/lib/angular.js:343:20)
    at nodeLinkFn (http://localhost:8080/lib/angular.js:7483:11)
    at compositeLinkFn (http://localhost:8080/lib/angular.js:6991:13)
    at compositeLinkFn (http://localhost:8080/lib/angular.js:6994:13)
    at compositeLinkFn (http://localhost:8080/lib/angular.js:6994:13) 

不明白为什么。。。除了可能是因为我使用了AngularJS v1.3.0?

是的,这是因为1.3.0。将中断更改描述为:

$controller将不再在窗口上查找控制器。在窗口中查找控制器的旧行为最初用于示例、演示和玩具应用程序。我们发现允许全局控制器功能会鼓励不良做法,因此我们决定在默认情况下禁用此行为

变更日志继续解释,您可以通过以下方式重新启用“全局”功能方法:

虽然不建议您这样做,但您可以像这样重新启用旧行为:


是的,这是因为1.3.0。将中断更改描述为:

$controller将不再在窗口上查找控制器。在窗口中查找控制器的旧行为最初用于示例、演示和玩具应用程序。我们发现允许全局控制器功能会鼓励不良做法,因此我们决定在默认情况下禁用此行为

变更日志继续解释,您可以通过以下方式重新启用“全局”功能方法:

虽然不建议您这样做,但您可以像这样重新启用旧行为:


是的,这是AngularJS 1.3.0的问题。另一种绕过它的方法(可能更简单更安全)是显式地包含AngularJS的旧版本。例如:


是的,这是AngularJS 1.3.0的一个问题。另一种绕过它的方法(可能更简单更安全)是显式地包含AngularJS的旧版本。例如:


在Angular 1.4中,这是工作解决方案:

index.html

<!DOCTYPE html>
<html ng-app="testApp">
  <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script>
    <script src="controllers.js"></script>
  </head>
  <body>
    <div ng-controller='HelloController'>
      <input ng-model='greeting.text'>
      <p>{{greeting.text}}, World</p>
    </div>
  </body>
</html>    

在第1.4节中,这是工作解决方案:

index.html

<!DOCTYPE html>
<html ng-app="testApp">
  <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script>
    <script src="controllers.js"></script>
  </head>
  <body>
    <div ng-controller='HelloController'>
      <input ng-model='greeting.text'>
      <p>{{greeting.text}}, World</p>
    </div>
  </body>
</html>    

不确定v1.3.0,但是。不确定v1.3.0,但是。这是一个更好的解决方案,如果你按照书去做,按照书去做,这是一个更好的解决方案,如果你按照书去做,按照书去做
<!DOCTYPE html>
<html ng-app="testApp">
  <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script>
    <script src="controllers.js"></script>
  </head>
  <body>
    <div ng-controller='HelloController'>
      <input ng-model='greeting.text'>
      <p>{{greeting.text}}, World</p>
    </div>
  </body>
</html>    
var testApp = angular.module('testApp', []);

testApp.controller('HelloController', function ($scope) {
  $scope.greeting = { text: 'Hello' };
});