我正在尝试在Angular的控制器中注入工厂,但我做不到。这是我的代码。


  app.controller('ManejadorEventosVista',['AdministradorMarcador',ManejadorEventosVista]);


“ app”是与具有各自依赖性的模块相对应的变量。控制器为“ ManejadorEventosVista”,需要工厂“ AdministradorMarcador”提供的服务。


  函数ManejadorEventosVista(){}


但是当我想在代码的这一部分中使用工厂“ AdministradorMarcador”时,则无法识别工厂。


  ManejadorEventosVista.prototype.seleccionarMarcadorOrigen = function(){
     AdministradorMarcador.setTipoMarcador(AdministradorMarcador.MARCADOR_ORIGEN);
  };


如何使用工厂
 ManejadorEventosVista.prototype.seleccionarMarcadorOrigen中的“ AdministradorMarcador”。

帮助或示例来指导我?? ..谢谢

最佳答案

ManejadorEventosVista需要一个参数,您就可以在函数内引用AdministradorMarcador,就像您为第一个变量命名一样。像这样

function ManejadorEventosVista(AdministradorMarcador){/**your code here**/}


您对行片段['AdministradorMarcador', ManejadorEventosVista]所做的操作是在声明您的函数依赖于AdministradorMarcador,但是由于没有提供ManejadorEventosVista的参数,AngularJS不知道您打算如何在控制器内引用AdministradorMarcador

这样做是为了使AngularJS脚本最小化,尤其是通过现有的解决方案,因为它们会将函数采用的变量更改为单个字母名称,从而使AngularJS无法确定要注入的服务或工厂。注释使用字符串和基于位置的排序来使脚本正常运行,即使在压缩脚本后也是如此,因为该过程不会更改字符串。

另见Latest Stable docs on Annotation

09-25 16:59