繁体   English   中英

Angular JS注入定制服务

[英]Angular JS Injecting Custom Service

我无法接受我的自定义服务,该服务位于单独的文件中。 我知道这完全是堆栈溢出,但是我无法分辨我在哪里搞砸了。

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)

我只列出了每个文件的开头,因此你们不必遍历大量代码。 我在哪里搞砸?

谢谢!

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

有几种解决方法。 从我的角度来看,最简单的方法是将您的角度应用程序设置为window.VARIABLE。

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

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

var myApp = window.myApp;

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

有更好的方法可以做到这一点。 但是,这一步就可以开始。 干杯!

嗨,您没有重新创建模块,而是通过var myApp = angular.module(“ angularApp”);获取现有模块。 如文档所述:-https: //docs.angularjs.org/api/ng/function/angular.module

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

我尝试使用1.3.14,但没有任何错误,您使用的是哪个版本:-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM