簡體   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