AngularJS错误:[$ controller:ctrlreg]控制器未注册
问题描述:
*窥视,
我在标题中引用的错误有点问题。我浏览过AngularJS文档,以前编写的代码和现有的*问题/答案,都无济于事。首先,这里是以前写的角度控制器正常工作:
Correct, functioning controller
这里是出现故障的控制器:
什么是特别令人沮丧的是,我毫不夸张地复制我的代码从功能角控制器(“focus_groups_ctrl”)到我的新控制器(“agencies_ctrl”),并简单地更新变量/参数名称来反映这一点。我在这里错过了什么?在api/v1/agencies中呈现的JSON数据正常工作,并且我的HTML页面正在ng-app和ng-controller属性中正确“包装”。请让我知道,并随时提出问题!谢谢!
下面是故障代码:
/* global angular */
(function() {
"use strict";
angular.module("app", ["ngAnimate"]).controller("agencies_Ctrl", function($scope, $http) {
$scope.setup = function() {
$http.get('/api/v1/agencies' + window.location.search).then(function(response) {
$scope.agenciesOffset = 0;
$scope.agenciesCount = 5;
$scope.agencies = response.data;
console.log($scope.agencies);
});
};
var i = 5;
$scope.nextLoad = function() {
$scope.agenciesOffset = i;
i += 5;
};
});
}());
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
这里是功能代码:
/* global angular */
(function() {
"use strict";
angular.module("app", ["ngAnimate"]).controller("focus_groups_Ctrl", function($scope, $http) {
$scope.setup = function() {
$http.get('/api/v1/focus-groups' + window.location.search).then(function(response) {
$scope.focusGroupOffset = 0;
$scope.focusGroupCount = 5;
$scope.focusGroups = response.data;
console.log($scope.focusGroups);
});
};
var i = 5;
$scope.nextLoad = function() {
$scope.focusGroupOffset = i;
i += 5;
};
});
}());
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
答
如以下示例所示,使用angular.module
API无意中重新定义模块也可能导致未知的控制器错误。
angular.module("app", ["ngAnimate"]).controller("agencies_Ctrl", fn1);
angular.module("app", ["ngAnimate"]).controller("focus_groups_Ctrl", fn2);
要解决此问题,请确保您只与angular.module(name, [requires])
语法在您的整个项目中定义的每个模块一次。通过angular.module(name)
找回以备后用。固定的例子如下所示。
angular.module("app", ["ngAnimate"]);
angular.module("app").controller("agencies_Ctrl", fn1);
angular.module("app").controller("focus_groups_Ctrl", fn2);
+0
非常好,这是解决问题的完美答案。非常感谢! – mylesw
当询问关于由您的代码中的问题的问题,你会得到更好的答案,如果你提供的代码的人可以用它来重现问题。代码的图像不可用。 – georgeawg
请参阅[AngularJS错误参考 - ctrlreg](https://docs.angularjs.org/error/$controller/ctrlreg) – georgeawg
@georgeawg感谢您的支持!我已经包含了这两个文件的代码片段 – mylesw