这个工厂依赖问题有什么问题?

What's wrong with this factory dependencies issue?

我正在与 AngularJS 合作。 我想要一个使用第一个工厂的控制器,这个控制器使用另一个工厂。

可以这样图式化:

MyCtrl -> Factory1 -> Factory2 

所以我尝试在 3 个不同的文件中执行(按以下顺序加载):

Factory2.js

app.factory('Factory2', function () { ... })

Factory1.js

app.factory('Factory1',['Factory2', function (Factory2) { ... })

controller.js

app.controller('MyCtrl',['$scope', 'Factory1', function ($scope, Factory1) { ... })

在我的 HTML 中我有:

<script src="services/factory2.js" type="text/javascript"></script>  
<script src="services/factory1.js" type="text/javascript"></script>
<script src="controllers/controller.js" type="text/javascript"></script>

但是它不起作用,我遇到了这个错误Unknown provider: Factory2Provider <- Factory2 <- Factory1

我的代码有什么问题?我错过了什么吗?

为什么不使用 $inject 显式注入?这是一种更好的方法,因为它可以让您更好地控制依赖项。例如:

userController.js

function userController (model, routeParams, searchService) {
    //implementation
}
userController.$inject = ['$scope', '$routeParams', 'searchService'];
app.controller("userController", userController);

searchService.js

var searchService = function (http, log) {
    //implementation
}
searchService.$inject = ["$http", "$log"];
app.factory("searchService", searchService);

这个post可能有用:Explicit Dependency Injection

你可以重构你的代码并使用模块,这样你就不需要使用 $inject

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

angular.module('factories', [])
    .factory('Factory2', function () { })
    .factory('Factory1', ['Factory2', function (Factory2) {
         return myCustomFunction = function () {
             alert('todo');
         }
    }]);

angular.module('mymodule', [])
    .controller('MyCtrl', ['$scope', 'Factory1', function ($scope, Factory1) {
    $scope.text = "testing";
}])

http://jsfiddle.net/kL78rdr3/3/