AngularJS 中的控制器不是函数错误:解决问题的综合指南
使用 AngularJS 时,您可能会遇到错误,指出控制器不是函数。当尝试全局定义控制器时通常会发生此错误,这在 AngularJS 1.3 中不再允许。要解决此问题,您必须使用 module.controller 语法显式注册控制器。
解决方案 1:使用 module.controller 语法注册控制器
定义控制器使用 module.controller 语法,请按照以下步骤操作:
angular.module('app', []) .controller('ContactController', ['$scope', function ContactController($scope) { // Controller logic here }]);
解决方案 2:使用$inject 注释和 AngularJS 1.3.5
对于 AngularJS 1.3.5 及更高版本,您可以使用 $inject 注释来定义控制器的依赖项。此注释应放置在控制器函数的顶部。
function ContactController($scope) { $scope.contacts = ["[email protected]", "[email protected]"]; $scope.add = function() { $scope.contacts.push($scope.newcontact); $scope.newcontact = ""; }; } ContactController.$inject = ['$scope']; angular.module('app', []).controller('ContactController', ContactController);
重新启用全局控制器(可选)
AngularJS 1.3 强制执行严格的作用域,这禁止全局控制器声明。但是,您可以通过在模块配置中使用 allowedGlobals 选项来重新启用全局控制器:
angular.module('app') .config(['$controllerProvider', function($controllerProvider) { $controllerProvider.allowGlobals(); }]);
其他注意事项:
通过遵循这些解决方案,您将成功解决“控制器不是函数”错误在 AngularJS 中并有效地定义控制器。
以上是为什么我的 AngularJS 控制器不是一个函数,我该如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!