Angular JS注入自定义服务

时间:2015-07-20 02:06:44

标签: javascript angularjs

我无法获得角度来接受我的自定义服务,该服务位于单独的文件中。我知道这已经遍布堆栈溢出,但我无法分辨出我在哪里弄乱。

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>

主要角度javascript文件(包含我的控制器)

var myApp = angular.module("angularApp", ["ui.codemirror","ui.bootstrap", "ngSanitize", "ngRoute"]);

myApp.controller("mainController", ["$scope", "$timeout", "clearCodemirror", function($scope, $timeout, clearCodemirror){

服务我正在尝试注入:

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)

我只包含了每个文件的开头,所以你们不必花费大量的代码。我搞砸了哪里?

谢谢!

2 个答案:

答案 0 :(得分:0)

通过从第二个文件调用angular.module(“angularApp”),您将重新创建一个角度模块,而不是获取对前一个文件中创建的模块的引用。

有几种方法可以解决这个问题。最简单的一个(在我的观点上)是将你的角应用设置为一个窗口.VARIABLE。

window.myApp = angular.module("angularApp", ["ui.codemirror","ui.bootstrap", "ngSanitize", "ngRoute"]);

然后,您可以从第二个文件:

var myApp = window.myApp;

myApp.service("clearCodemirror", function(cm){

有更好的方法可以做到这一点。但是,这个你让你去。干杯!

答案 1 :(得分:0)

您好,您不是通过var myApp = angular.module(“angularApp”)创建您获得现有模块的模块;  正如文件所述: -       https://docs.angularjs.org/api/ng/function/angular.module

传递两个或多个参数时,会创建一个新模块。如果只传递一个参数,则检索现有模块(作为模块的第一个参数传递的名称)。

我试过1.3.14,我没有得到任何错误,你正在使用哪个版本: -