这个工厂依赖问题有什么问题?
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";
}])
我正在与 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";
}])