以角度注入控制器中的工厂

时间:2016-01-22 04:18:34

标签: javascript angularjs

我试图在Angular的控制器中注入一个工厂,但我不能这样做。这是我的代码。

  

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

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

  

函数ManejadorEventosVista(){}

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

  

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

如何使用工厂  'AdministradorMarcador'在ManejadorEventosVista.prototype.seleccionarMarcadorOrigen ?? ..

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

1 个答案:

答案 0 :(得分:1)

ManejadorEventosVista需要接受一个参数,你将能够引用函数内部的AdministradorMarcador作为你命名的第一个变量。像这样

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

您对线段['AdministradorMarcador', ManejadorEventosVista]所做的是声明您的函数取决于AdministradorMarcador,但没有向ManejadorEventosVista提供参数,AngularJS并不知道你是怎么做的打算在控制器中引用AdministradorMarcador

这样做是为了允许AngularJS脚本缩小,尤其是已经存在的解决方案,因为它们会将您的函数变量更改为单个字母名称,从而使AngularJS无法确定要注入的服务或工厂。注释使用字符串和基于位置的排序,以允许您的脚本工作,即使在缩小之后,因为字符串不会被该过程改变。

另见Latest Stable docs on Annotation