为什么此代码适用于AngularJS 1.2.9但不适用于1.3.2?

时间:2014-11-17 04:35:25

标签: angularjs

我有一个AngularJS应用程序,目前可以使用1.2.9角度版本,但是当我将库版本更改为1.3.2时,我收到以下错误:

  

参数'AlumnosController'不是函数,未定义

查看代码:

<!DOCTYPE html>
<html ng-app>
<head>
    <meta charset="utf-8">
    <title>Cuaderno Alumnos</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body ng-controller="AlumnosController">
        <h1>Cuaderno Alumnos</h1>   
    <div class="wrapper">
    <div class="contact-item" ng-repeat="alumno in alumnos | orderBy:'nombre'">
        <div class="nombre"> {{alumno.nombre}} - {{alumno.telefono}}</div>
        <span class="curso">{{alumno.curso}} </span>
    </div>
     </div> 
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js" type="text/javascript"></script>
<script src= "AlumnosController.js" type="text/javascript"></script>
</body>

控制器代码:

function AlumnosController($scope){
        $scope.alumnos=[
                {nombre:"Juan Blanco", telefono: "1234567890", curso:"Segundo ESO"},
                {nombre:"Rosa Luxemburgo", telefono: "0987654321", curso:"Primero ESO"},
                {nombre:"Alberto Herrera", telefono: "1122334455", curso:"Segundo ESO"},
                {nombre:"Ana Mariño", telefono: "6677889900", curso:"Tercero ESO"}
                ];
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Angular 1.3.0-beta-15中引入了一个重大变化:

  

重大改变

     

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

     

要迁移,请使用模块注册控制器,而不是将它们公开为全局:

     

在:

function MyController() {
  // ...
}
  

后:

angular.module('myApp', []).controller('MyController', [function() {
  // ...
}]);
  

虽然不推荐,但您可以重新启用旧的行为:

angular.module('myModule').config(['$controllerProvider', function($controllerProvider) {
  // this option might be handy for migrating old apps, but please don't use it
  // in new ones!
  $controllerProvider.allowGlobals();
}]);

<强>参考