我无法接受我的定制服务,该服务位于单独的文件中。我知道这都是堆栈溢出造成的,但我就是不知道我在哪里搞砸了。
HTML:
<!DOCTYPE html>
<html lang="en" ng-app="angularApp">
<head>
<!-- ANGULAR -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular-sanitize.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular-route.js"></script>
<link href="styles/angularApp.css" rel="stylesheet">
<script src="scripts/controllers/angularApp.js"></script>
<script src ="scripts/services/clearCodemirror.js"></script>
主 Angular javascript 文件(包含我的 Controller )
var myApp = angular.module("angularApp", ["ui.codemirror","ui.bootstrap", "ngSanitize", "ngRoute"]);
myApp.controller("mainController", ["$scope", "$timeout", "clearCodemirror", function($scope, $timeout, clearCodemirror){
我尝试注入(inject)的服务:
var myApp = angular.module("angularApp");
myApp.service("clearCodemirror", function(cm){
我不断收到错误:
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.6/$injector/modulerr?p0=angularApp&p1=Error…oogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.6%2Fangular.min.js%3A29%3A56)
我只包含每个文件的开头,这样你们就不必费力地阅读大量代码。我哪里搞砸了?
谢谢!
最佳答案
通过从第二个文件中调用 angular.module("angularApp"),您将重新创建一个 Angular 模块,并且不会获得对在前一个文件中创建的模块的引用。
有几种方法可以解决这个问题。最简单的一个(在我看来)是将 Angular 应用程序设置为 window.VARIABLE。
window.myApp = angular.module("angularApp", ["ui.codemirror","ui.bootstrap", "ngSanitize", "ngRoute"]);
然后,从第二个文件中您可以:
var myApp = window.myApp;
myApp.service("clearCodemirror", function(cm){
有更好的方法可以做到这一点。然而,这个让你继续前进。干杯!
关于javascript - Angular JS 注入(inject)自定义服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31507942/