2017-03-16 195 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

相關問題