我剛開始學習AngularJS
,我正在創建控制器和服務(工廠)。AngularJS中的獨立控制器和工廠模塊
我的文件夾結構是這樣的:
Scripts
|
|-- Controllers
|
|-- invoiceController.js
|-- customerController.js
|
|-- Services
|
|-- invoiceServices.js
|-- customerServices.js
|
|-- app.js
現在我想基於對象的所有邏輯分離(例如發票,客戶,...)。 因此,我爲我的發票擁有控制器和服務,併爲我的客戶提供兩種服務之一。
但是,如何在控制器中注入正確的服務?
當我試試這個:
app.js
(function() {
'use strict';
angular.module('skycountApp', [
invoiceService
]);
})();
invoiceController.js
invoiceService.js
(function() {
'use strict';
var invoiceService = angular.module('invoiceService', ['ngResource']);
invoiceService.factory('Invoices', ['$resource',
function ($resource) {
return 'All invoices';
}
]);
})();
的index.html
<!DOCTYPE html>
<html ng-app="skycountApp">
<head>
<meta charset="utf-8" />
<title>DOTA 2 Heroes</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-resource.js"></script>
<script src="app.js"></script>
</head>
<body ng-cloak>
<div ng-controller="InvoiceController">
<h1>{{text}}</h1>
</div>
</body>
</html>
我看到消息All invoices
。
但現在我已經在應用程序創建時注入了服務。我會有更多的服務(一個用於客戶,一個用於支付,...),所以在開始時注入它們聽起來對我來說很愚蠢。
如何在正確的控制器中注入正確的服務?
app.js
(function() {
'use strict';
angular.module('skycountApp', [
//invoiceService this is not needed here
]);
})();
invoiceController.js
(function() {
'use strict';
// Its only needed here, how to inject it??????
angular
.module('skycountApp')
.controller('InvoiceController', invoiceController);
invoiceController.$inject = ['$scope', 'Invoices'];
function homeController($scope, Invoices) {
$scope.text = Invoices;
}
})();
但是爲什麼把所有這些放在同一個模塊中呢?分裂東西不是更好嗎?所以你可以在控制器中注入所需的模塊? – Mivaweb
沒有辦法更好的方法。你把我們的服務保存在一個單獨的文件中,這就夠了。 – maddygoround
因此,如果只有'invoiceController'出現在html頁面中,它將只適用於此,並且不會對其他模塊和服務執行任何操作? – Mivaweb