2015-07-20 71 views
1

我不能接受我的自定義服務,這是在一個單獨的文件。我知道這是遍佈堆棧溢出,但我不知道我在搞什麼。Angular JS注入自定義服務

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) 

我只包括每個文件的開頭,所以你們不必通過大量的代碼。我在哪裏搞砸了?

謝謝!

回答

0

通過從您的第二個文件中調用angular.module(「angularApp」),您正在重新創建一個角度模塊,而不是獲取對在前一個文件上創建的模塊的引用。

有幾種方法可以解決這個問題。最簡單的一個(就我的觀點而言)是將您的角度應用程序設置爲一個窗口。變量。

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

然後,從第2個文件就可以了:

var myApp = window.myApp; 

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

有更好的方法來做到這一點。然而,這一個你讓你去。乾杯!

+0

仍然得到同樣的錯誤,當我做到這一點。思考? – acz

0

嗨,你不是重新創建模塊,你正在通過var myApp = angular.module(「angularApp」)獲取現有模塊; 的文檔指出: - https://docs.angularjs.org/api/ng/function/angular.module

當通過兩個或多個參數,創建一個新的模塊。如果僅傳遞一個參數,則檢索現有模塊(作爲第一個參數傳遞給模塊的名稱)。

我試着用1.3.14,我沒有得到任何錯誤,你使用的版本: -