繁体   English   中英

AngularJS - 将$ factory注入控制器

[英]AngularJS - Inject $factory into controller

我注册了多个工厂,比如CircleSquareTriangle ,还有一个名为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM