使用Angular 1.3.x时,全局函数不会被识别为控制器。出了什么问题?我该如何纠正?
function MyController() {
// etc
}
<div ng-controller="MyController"></div>
控制台显示以下错误:
错误:[ng:areq] http://errors.angularjs.org/1.3.2/ng/areq?p0=MyController&p1=not%20a%20function%2C%20got%20undefined
答案 0 :(得分:3)
根据the docs:
如果当前的$ controllerProvider配置为使用全局变量(通过 $ controllerProvider.allowGlobals()),这也可能是一个名字 全局可访问的构造函数(不推荐)。
此更改已到达Angular 1.3.0-beta.15 (changelog)。
这是Angular在旧版本中的行为更改,默认情况下会将全局函数识别为控制器。这是不好的做法,无论如何都不应该被使用。具有讽刺意味的是,为了使用它们,您无论如何都必须为您的应用程序使用正确的设置,并且无论如何都不想在那时使用它们。
因此,您需要以这种方式设置应用:ng-app="myApp
和ng-controller="MyController"
angular.module('myApp', [])
.controller('MyController', function($scope) {
$scope.author = {
'name' : 'Mohammad Mohabati',
'title' : 'Web Design',
'company' : 'MohabatiPro'
};
})
;
然后可以使用设置 allowGlobals
.config(function($controllerProvider) {
$controllerProvider.allowGlobals();
});
以便ng-controller="SomeFunction"
可以使用全局函数,如:
function SomeFunction($scope) { //etc
但不要这样做。 :)
答案 1 :(得分:0)
首先尝试启动您的模块 在你的HTML添加:
纳克应用内=&#39;对myApp&#39;
在你的脚本中添加: var app = angular.module(&#39; myApp&#39;,[]);