2017-03-23 65 views
0

我使用angularjs創建了一個應用程序,我有兩個控制器和一個服務(全部在分開的文件中)。我的問題是,我不能在控制器中注入服務。我在與控制器相同的文件中使用了該服務,並且它工作正常,但我希望它在分離的文件中在控制器之間共享數據。使用angularjs在控制器中注入服務

這是我的一個控制器

 var app = angular.module('cloudpear', ['ngRoute','ServiceUser']); 

    app.controller('login',['$scope','$location','$window', function(ServiceUser,$scope,$location,$window){ 
..... 
}]); 

這是我的服務

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

app.factory('ServiceUser',function(){ 
    var user=[]; 

    return{ 
     add: add, 
     get: get 
    } 

    function add(item){ 
     user.push(item); 
    } 

    function get(){ 
     return user; 
    } 

    return user; 
}); 

我得到這個錯誤:

未捕獲的錯誤:[$注射器:modulerr] http://errors.angularjs.org/1.6.4-build.5327+sha.233f47b/ $噴油器/ modulerr ... 20(https%3A%2F%2Fcode.angularjs.org%2Fsnapshot%2Fangular.min.js%3A22%3A179)

你能告訴我我做錯了什麼,我到處搜索並嘗試了多種解決方案,但沒有成功!

+0

它給出了同樣的錯誤 –

回答

2

由於您已經定義了一個單獨的服務模塊,因此您需要在cloudpear模塊聲明中注入service模塊。

var app = angular.module('cloudpear', ['ngRoute','service']); 
               //^^^^^^^^^^ instead of ServiceUser 

然後需要控制器

app.controller('login',['ServiceUser', '$scope','$location','$window',function(ServiceUser, $scope,$location,$window){ 
+0

什麼是從以前的答案不同的注射服務? – vict

+0

@vict,先前的回答是關於'angular.module('cloudpear',['ngRoute','service'])的答案嗎? – Satpal

+1

這個工程,非常感謝你! –