为啥我不在角度控制器中注入服务?
Posted
技术标签:
【中文标题】为啥我不在角度控制器中注入服务?【英文标题】:Why i dont inject service in a angular controller?为什么我不在角度控制器中注入服务? 【发布时间】:2018-07-18 08:50:43 【问题描述】:我尝试在 mi 控制器中注入我的服务,但无法正常工作,并且 chrome 控制台显示此错误:
angular.min.js:124 错误:[$injector:unpr] http://errors.angularjs.org/1.6.6/$injector/unpr?p0=bookServiceProvider%20%3C-%20bookService%20%3C-%20bookController
我的html:
<html ng-app="myApp">
<head>
<script src="resources/jquery/jquery.min.js"></script>
<script src="resources/angular/angular.min.js"></script>
<script src="services/book.service.js"></script>
<script src="controllers/book.controller.js"></script>
</head>
<body ng-controller="bookController">
</body>
我的控制器:
(function ()
'use strict';
angular
.module('myApp', [])
.controller('bookController', bookController);
bookController.$inject = ['$location', '$rootScope', '$scope', 'bookService'];
function bookController($location, $rootScope, $scope, bookService)
var vm = this;
)();
当我尝试注入一些库(如 toastr、其他服务等)时会发生这种情况......
【问题讨论】:
您需要显示定义bookService
的代码,但Sébastien 的答案可能是正确的。
【参考方案1】:
您似乎是在 book.controller.js
脚本中定义您的应用程序模块
以下部分创建一个新模块:
angular.module('myApp', []); // Creates and returns the "myApp" module
所以我怀疑你的bookService
是在同一个模块中声明的。
如果您已经有一个名为“myApp”的模块,那么只需将您的控制器附加到它:
angular.module('myApp'); // Returns a previously created module named "myApp"
【讨论】:
谢谢!!我已经在我的服务和控制器中定义了模块!现在它的工作以上是关于为啥我不在角度控制器中注入服务?的主要内容,如果未能解决你的问题,请参考以下文章
尝试将服务注入角度组件时出错“例外:无法解析组件的所有参数”,为啥?