【问题标题】:angular 1.3 can't find the controller functionangular 1.3 找不到控制器功能
【发布时间】:2014-10-30 00:17:16
【问题描述】:

我是 Angular 新手,并尝试使用 1.3 新版本。
这是我的代码

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.min.js"></script>
</head>
<body>
<div data-ng-controller="SimpleController"  >

<ul>        
<li data-ng-repeat="customer in customers">{{customer.name}} - {{customer.city}}</li>
</ul>


</div>
<script>

function SimpleController($scope){

    alert('done1');
    $scope.customers=[{name:'1name',city:'1city'},{name:'2name',city:'2city'}];
    alert('done');
} 
</script>

控制台给出了这个错误。

Error: [ng:areq] http://errors.angularjs.org/1.3.0-rc.0/ng/areq?p0=SimpleController&p1=not%20a%20function%2C%20got%20undefined    

但是当我将角度源更改为

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>   

然后就可以了。我用铬。 任何人都让我知道问题可能出在哪里。

【问题讨论】:

  • 试试未压缩的 angular.js 文件。错误消息通常更容易理解
  • @Phil。我试过 https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.js 。还是一样。不工作..
  • 我自己是 Angular 新手。您可以将数据属性用于角度指令吗?喜欢data-ng-controller 而不是ng-controller。其次,试试这样的代码:angular.module('controllers').controller('SimpleController', ['$scope', function($scope) { /* ... */ }]);。基本上,在“角度的命名空间”中设置控制器

标签: javascript html angularjs


【解决方案1】:

默认情况下,1.3 不再支持全局控制器功能。见change log...

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

可以用这个配置重新启用...

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();
}]);

【讨论】:

  • 感谢您的回答。我对 Angular 很陌生,假设有很多教程,应该基于 1.2。如果我使用 1.2 教程迁移到 1.3 版本,可能会出现这样的问题。 ng-learn.org/2014/06/Migration_Guide_from_1-2_to1-3 还显示了某些更改,我不知道它们的全部内容...您是否推荐任何好的起点/教程 1.3 从头开始​​学习。
  • 就个人而言,我会学习 1.2,因为那里的大部分材料都是基于 1.2 的。一旦您对 Angular 感到满意,其中许多事情就会变得有意义。 1.2 和 1.3 之间存在差异,但基本概念保持不变。
  • 然而,当我添加你提到的代码片段时,它会在控制台Uncaught object angular.js:80 (anonymous function) angular.js:80 (anonymous function) angular.js:1799 ensure angular.js:1723 module angular.js:1797 (anonymous function)
  • 代码 sn-p 假设已经定义了一个名为 myModule 的模块。如果不是,请更改为angular.module('myModule', []).config(...);,然后将您的HTML 中的ng-app 更改为ng-app="myModule"...
  • 我不同意这个决定。我认为像以前那样更容易做到。互联网上的许多示例将不再有效。这将使 Angular 更难学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多