我无法理解Angular中控制器和工厂之间的区别。
我的主要应用程序如下所示:
angular.module('myApp', [
'ui.router',
'ngAnimate',
'myApp.angular-loading-bar',
'myApp.translate',
'myApp.repository',
'myApp.services',
'myApp.directives',
'myApp.controllers',
'myApp.filters',
'myApp.version'
]);
我在controllers.js文件中包含所有控制器:
angular.module('myApp.controllers', [
'myApp.mainController',
'myApp.headerController',
'myApp.rootController'
]);
例如我的控制器文件是
var root = angular.module('myApp.rootController', []);
root.controller('rootController', [
'$scope',
'$log',
function($scope, $log) {
function init() {
$log.debug('[rootController] Init...');
}
init();
}
]);
一切都像魅力一样。当我扩展关于新角度模块的应用程序' myApp.repository'
时 angular.module('myApp.repository', [
'myApp.newsRepository'
]);
newsRepository.js:
var newsRepository = angular.module('myApp.newsRepository', []);
newsRepository.factory('newsRepository', [
$log',
'$http',
'$q',
function($log, $http, $q) {
var service = {
check: function() {
var deferred = $q.defer();
var request = $http({
method: 'GET',
url: 'news'
});
return deferred;
}
};
return service;
}
]);
我明白了:
Error: [$injector:unpr] Unknown provider: newsRepositoryProvider <- newsRepository <- headerController
但是如果我在repository.js中将NewRepository.js的主体都恢复正常。
好的,这不是结果,但是在index.html中浏览器资源资源管理器的某些部分我看到了所有的js文件,但有些文件不可用?嗯... gulp / misspellings?
复杂的结果:)
1)使用这样的文件的相对路径... 从现在开始,所有js文件中的abasolute路径都是app.js。
答案 0 :(得分:1)
在这一行:
<强> newsRepository.js 强>
// wrong
var newsRepository = angular.module('myApp.repository', []);
// right
var newsRepository = angular.module('myApp.newsRepository', []);