2017-03-16 103 views
0

StackOverflow窥视,

我在标题中引用的错误有点问题。我浏览过AngularJS文档,以前编写的代码和现有的StackOverflow问题/答案,都无济于事。首先,这里是以前写的角度控制器正常工作:

Correct, functioning controller

这里是出现故障的控制器:

Malfunctioning 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> 
+0

当询问关于由您的代码中的问题的问题,你会得到更好的答案,如果你提供的代码的人可以用它来重现问题。代码的图像不可用。 – georgeawg

+0

请参阅[AngularJS错误参考 - ctrlreg](https://docs.angularjs.org/error/$controller/ctrlreg) – georgeawg

+0

@georgeawg感谢您的支持!我已经包含了这两个文件的代码片段 – mylesw

回答

0

如以下示例所示,使用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

相关问题