为啥我不在角度控制器中注入服务?

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"

【讨论】:

谢谢!!我已经在我的服务和控制器中定义了模块!现在它的工作

以上是关于为啥我不在角度控制器中注入服务?的主要内容,如果未能解决你的问题,请参考以下文章

尝试将服务注入角度组件时出错“例外:无法解析组件的所有参数”,为啥?

如何从工厂发出事件

为啥 $element 在控制器中可用/注入?

为啥颤振 API 响应正文不在控制台中打印?

为啥 awesome_print 不在我的 Rails 4.2 控制台中打印出格式化输出?

为啥不在我的应用程序中使用 scrollView 方法?