[英]AngularJS - Inject $factory into controller
我注册了多个工厂,比如Circle
, Square
和Triangle
,还有一个名为ShapeController
的控制器。 在ShapeController
内部,我正在尝试使用其字符串表示来检索其中一个工厂,同样我可以使用$controller('ControllerName', {...})
来获取控制器。
var ShapeController = function($scope, $routeParams, $factory) {
var shape = $factory('Circle', []); // shape is an instance of the Circle factory
....
}
我希望我可以注入$factory
但我不断收到Error: [$injector:unpr] Unknown provider: $factoryProvider <- $factory <- ShapeController
。 有没有api或某种方式我可以找回工厂?
不,你弄错了。 实际上在angularjs框架内没有任何称为$factory
内置服务/提供程序。 你提到的关于$controller
的东西,它是由angularjs创建的一个特殊的提供者,用一些本地实例化一个控制器(你也可以模拟依赖关系)。
因为你想获取特定依赖项的实例,你可以从injector
提取它(这就像DI系统的DI容器),你应该在你的控制器工厂函数中注入$injector
依赖项并使用get
方法来检索特定的依赖项。
var ShapeController = function($scope, $routeParams, $injector) {
var shape = $injector.get('Circle');
....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.