2017-09-14 21 views
0

我有兩個控制器和在我的角應用一個服務在3個不同的文件分裂如下:角具有控制器和服務在不同的文件

主控制器

var app = angular.module("app",[]); 

app.controller("mainController", function(){ 
    console.log("Hi main controller"); 
}) 

第二控制器

var app = angular.module("app"); 

app.controller("secondController", ['myCoolService', function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
}]); 

服務

var app = angular.module("app"); 

app.service('myCoolService', function() { 
}); 

我確信我正確地將其導入:

<script type="text/javascript" src="js/controllers/mainController.js"></script> 
<script type="text/javascript" src="js/services/myCoolService.js"></script> 
<script type="text/javascript" src="js/controllers/secondController.js"></script> 

但是我發現了一個未知服務異常:

Unknown provider: $resourceProvider <- $resource <- myCoolService 

有人能幫助我嗎?

+0

可能是問題寫在myCoolService.js – Rahul

+0

當你使用'angular.module(「APP」)'(注意沒有'[]」的角度將檢索模塊,而不是創建一個新的)東西 – Manu

+0

郵政編碼裏面的烏爾服務..應該在服務js文件..可能是你還沒有包括angular-resource.js文件 – Rahul

回答

3

應該是:

var app = angular.module("app"); 

app.controller("secondController", ['$rootScope', 'myCoolService', 
    function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
    } 
]); 

見,AngularJS噴油器無論是從一個陣列獲取特定的相關的名字 - 或使用工廠函數參數他們。第一種方法實際上是推薦的,因爲它可以承受縮小並讓Angular跳過解析函數的參數列表。

問題是,AngularJS不會混合這些方法:如果指定了deps列表,那麼它會被使用,並且參數給出的任何提示都會被忽略。這就是爲什麼您的原始代碼實際上將myCoolService放入$ rootScope變量(第一個依賴項被分配給第一個參數),但是不知道在哪裏找到第二個。

+0

不工作,在這裏相同的結果。 – Manu

+0

那麼myCoolService是如何定義的?請將其聲明添加到問題中。 – raina77ow

+0

對不起,我的錯,我的服務有錯誤。謝謝。 – Manu

0

在你的第二個控制器中,你缺少依賴關係。

var app = angular.module("app"); 

app.controller("secondController", ['$rootScope', 'myCoolService', function($rootScope, myCoolService){ 
    console.log("Hi second controller") 
}]); 
相關問題