1

我試圖將組件分成幾個文件,但對於一個簡單的應用程序,但角度的依賴注入器給我頭痛,我真的不知道什麼是預期的。依賴注入地獄,預計什麼?

Unknown provider: servicesProvider <- services <- maincontroller 

是我收到的錯誤。

app.js

//Application definition with injected dependencies 
var app = angular.module('leadcapacity', ['services', 'utils', 'customfilters', 'controllers']); 

services.js

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

services.service('xrmservice', 
[ 
    '$http', function($http) { 

     var oDataUrl = Xrm.Page.context.getClientUrl() + '/XRMServices/2011/OrganizationData.svc/'; 
     var service = {}; 

     service.query = function(entitySet, query) { 
      return $http.get(oDataUrl + entitySet + '?' + query); 
     }; 

     return service; 
    } 
]); 

controllers.js

var ctrls = angular.module('controllers', ['utils', 'services']); 

ctrls.controller('maincontroller', 
    function ($scope, services, utils) { 



    }; 
}); 

而且在index.html

<script src="service.js"></script> 
<script src="controllers.js"></script> 
<script src="app.js"></script> 
的包括訂單

對我來說很好。我知道這可能不是組織事物的最佳方式,但首先獲得「Hello World」會很好。

謝謝。

回答

1

出現在控制檯中的錯誤消息明確表示,services 依賴項不存在於模塊中。

您已經maincontroller控制器工廠的功能注入不正確的服務名稱,基本上你試圖注入services(模塊名稱),而不是xrmservice(服務名稱)

function ($scope, services, utils) { 

應該

function ($scope, xrmservice, utils) { 

加法人

做好後續DI的內聯陣註解,因爲你已經使用了相同的在你的xrmservice服務JS文件,這樣在將來你並不需要回去和更改,當你面對的JavaScript縮小相關問題。

控制器

ctrls.controller('maincontroller', [ '$scope', 'xrmservice', 'utils', 
    function ($scope, xrmservice, utils) { 

     //code goes here 
     //.... 
    }; 
}]); 
+0

OK,這是奇怪的。我以爲我可以訪問控制器中的'services.xrmservice'。謝謝。 –

+0

np。很高興知道它幫助,謝謝:-) –

0

你雖然它們注入到模塊中,你需要給他們的功能,使您可以使用注射模塊

ctrls.controller('maincontroller', 
    ['$scope', 'services', 'utils', function ($scope, services, utils) { 


    }; 
}]);