![](/img/trans.png)
[英]How many controllers (services,factories,directives) in one AngularJS file
[英]How can I organize angularjs factories/services/config/controllers files in different locations?
目前我有這個結構:
index.html
>views
login-view.html
report-view.html
>JS
config.js
>controllers
loginCtrl.js
reportCtrl.js
>factories
firebaseRefFactory.js
在config.js中,我具有模板的路由以及firebase等的注入。 我可以正確使用控制器,但是如果嘗試使用工廠,則會收到未捕獲的錯誤:[$ injector:modulerr]
我的index.html
<head>
<!-- STYLES-->
<link rel="stylesheet" type="text/css" href="CSS/modifier.css">
<link rel="stylesheet" type="text/css" href="CSS/base.css">
<link rel="stylesheet" type="text/css" href="CSS/skeleton.css">
<link rel="stylesheet" type="text/css" href="CSS/layout.css">
<!-- ANGULAR -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>
<script src="JS/angular-ui-router.min.js"></script>
<script src="https://cdn.firebase.com/js/simple-login/1.6.2/firebase-simple-login.js"></script>
<!-- FIREBASE -->
<script src="https://cdn.firebase.com/js/client/1.0.17/firebase.js"></script>
<!-- ANGULARFIRE -->
<script src="https://cdn.firebase.com/libs/angularfire/0.8.0/angularfire.js"></script>
<!-- CONFIG -->
<script src="JS/config.js"></script>
<!-- FACTORIES -->
<script src="JS/factories/firebaseRefFactory.js"></script>
<!-- CONTROLLERS -->
<script src="JS/controllers/login.js"></script>
<script src="JS/controllers/reporte.js"></script>
</head>
我的config.js
angular.module('Demo', ['firebase','ui.router']).config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('login');
$stateProvider.
state('login', {
url: '/login',
templateUrl: 'VIEWS/login-view.html',
controller: 'loginCtrl'
}).
state('report', {
url: '/report',
templateUrl: 'VIEWS/report-view.html',
controller: 'reportCtrl',
}); }]);
我要使用工廠的loginCtrl
angular.module('Demo').controller('loginCtrl', ['$scope', 'firebaseRefFactory', function($scope, firebaseRefFactory){
alert(firebaseRefFactory.getRef()); }]);
我的工廠
angular.module('Demo').factory('firebaseRefFactory', ['', function(){
return function getRef(){
var text = "132";
return text;
} }]);
我嘗試更改html文件中腳本的順序,並將工廠注入config文件中的angular模塊。
angular.module('Demo').factory('firebaseRefFactory', ['', function(){
return function getRef(){
var text = "132";
return text;
} }]);
修改為:
angular.module('Demo').factory('firebaseRefFactory', function(){
return{
getRef: function(){
var text;
text = '123';
return text;
}
};
});
感謝TheSharpieOne,該指南對我們很有用: https : //github.com/johnpapa/angularjs-styleguide
您的DI中有一個空洞的爭論:
angular.module('Demo').factory('firebaseRefFactory', function(){
return function getRef(){
var text = "132";
return text;
});
也許嘗試一下? 您在那里所擁有的應該是除此之外的。 盡量避免使用DI的數組符號,如果縮小JS,請使用ng-annotate。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.