AngularJS:未知提供者:$scopeProvider <- $scope 错误(未在服务中注入 $scope)
AngularJS: Unknown provider: $scopeProvider <- $scope error (not injecting $scope in the service)
我似乎与许多其他使用 AngularJS 和依赖注入的人有类似的问题,即:我的 AngularJS 应用程序给出了一个未知的提供者:$scopeProvider <- $scope 错误,当我尝试将服务注入控制器。尽管如此,我到处都能找到的唯一常见错误(和解决方案)是不应该在服务函数中注入 $scope 或 $rootScope。我没有这样做。我发现的另一个问题是你应该将所有依赖项作为字符串传递,因为它们由于缩小而无法被 AngularJS 识别(我现在在我的开发操作中)。我也这样做了。所以现在的问题是...我的 logic/structure 出了什么问题,我该如何解决?
这是我的应用程序的基本结构:
angular.module('MyApp', ['ngMaterial']);
angular
.module('MyApp')
.factory('Utils', function(){
return {
normalCase: function(str){
result = '';
str.split(' ').forEach(function(string, i){
result += string[0].toUpperCase() + string.slice(1).toLowerCase();
if(i<str.split(' ').length) result += ' ';
});
return result;
}
})
.controller('AppController', ['$scope', '$mdDialog', 'Employee', 'Utils', '$http',
function($scope, Employee, Utils, $http, $mdDialog){
$scope.employee.firstName = Utils.NormalCase(employee.firstName);
}])
另外,index.html文件中添加文件的顺序是:
<script src="js/app.js"></script>
<script src="js/models/Employee.js"></script>
<script src="js/models/Utils.js"></script>
<script src="js/controllers/AppController.js"></script>
<script src="js/controllers/EmployeeListController.js"></script>
<script src="js/controllers/ScorecardController.js"></script>
提前致谢!
要注入控制器的依赖项的名称需要与控制器函数声明中相应参数的顺序相同(参见Angular's guide to Dependency Injection)。
你的控制器应该像这样初始化:
.controller('AppController', ['$scope', '$http', '$mdDialog', 'Employee', 'Utils',
function($scope, $http, $mdDialog, Employee, Utils){
$scope.employee.firstName = Utils.NormalCase(employee.firstName);
}])
首先列出 AngularJS 依赖项,然后是您自定义的依赖项也是一种常见的约定。
我似乎与许多其他使用 AngularJS 和依赖注入的人有类似的问题,即:我的 AngularJS 应用程序给出了一个未知的提供者:$scopeProvider <- $scope 错误,当我尝试将服务注入控制器。尽管如此,我到处都能找到的唯一常见错误(和解决方案)是不应该在服务函数中注入 $scope 或 $rootScope。我没有这样做。我发现的另一个问题是你应该将所有依赖项作为字符串传递,因为它们由于缩小而无法被 AngularJS 识别(我现在在我的开发操作中)。我也这样做了。所以现在的问题是...我的 logic/structure 出了什么问题,我该如何解决?
这是我的应用程序的基本结构:
angular.module('MyApp', ['ngMaterial']);
angular
.module('MyApp')
.factory('Utils', function(){
return {
normalCase: function(str){
result = '';
str.split(' ').forEach(function(string, i){
result += string[0].toUpperCase() + string.slice(1).toLowerCase();
if(i<str.split(' ').length) result += ' ';
});
return result;
}
})
.controller('AppController', ['$scope', '$mdDialog', 'Employee', 'Utils', '$http',
function($scope, Employee, Utils, $http, $mdDialog){
$scope.employee.firstName = Utils.NormalCase(employee.firstName);
}])
另外,index.html文件中添加文件的顺序是:
<script src="js/app.js"></script>
<script src="js/models/Employee.js"></script>
<script src="js/models/Utils.js"></script>
<script src="js/controllers/AppController.js"></script>
<script src="js/controllers/EmployeeListController.js"></script>
<script src="js/controllers/ScorecardController.js"></script>
提前致谢!
要注入控制器的依赖项的名称需要与控制器函数声明中相应参数的顺序相同(参见Angular's guide to Dependency Injection)。
你的控制器应该像这样初始化:
.controller('AppController', ['$scope', '$http', '$mdDialog', 'Employee', 'Utils',
function($scope, $http, $mdDialog, Employee, Utils){
$scope.employee.firstName = Utils.NormalCase(employee.firstName);
}])
首先列出 AngularJS 依赖项,然后是您自定义的依赖项也是一种常见的约定。