AngularJS-将$factory注入控制器



我注册了多个工厂,比如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');
....
}

最新更新