2016-01-22 65 views
0

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

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

'app'是对应于具有各自相关性的模块的变量。控制器是'ManejadorEventosVista',并且需要工厂'AdministradorMarcador'提供的服务。

功能ManejadorEventosVista(){}

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

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

我该怎么做才能使用工厂 'AdministradorMarcador' 在ManejadorEventosVista.prototype.seleccionarMarcadorOrigen ?? ..

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

回答

1

ManejadorEventosVista需要引用一个参数,并且您将能够在函数内引用AdministradorMarcador作为第一个变量的名称。像这样

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

你与线片段做什么['AdministradorMarcador', ManejadorEventosVista]被宣告你的功能依赖于AdministradorMarcador,但没有提供参数ManejadorEventosVista,AngularJS不知道你是怎么打算引用AdministradorMarcador控制器内。

这样做是为了允许AngularJS脚本被缩小,特别是通过现有的解决方案,因为它们会将您的函数所用的变量更改为单个字母名称,从而使AngularJS无法确定要注入哪个服务或工厂。注释使用字符串和基于位置的顺序来允许您的脚本工作,即使在缩小之后也是如此,因为字符串不会被流程改变。也

Latest Stable docs on Annotation

+0

Thanks..it是右和作品,但我需要使用工厂“AdministradorMarcador”如以下代码所示:第1行:“app.controller(” ManejadorEventosVista”,[‘AdministradorMarcador’ ,ManejadorEventosVista]);'' ,第2行:var ManejadorEventosVista = function(AdministradorMarcador){}; ,第3行:ManejadorEventosVista.prototype.seleccionarMarcadorDestino = function(){AdministradorMarcador.setTipoMarcador(AdministradorMarcador.MARCADOR_DESTINO);}; – alex

+0

问题是,内ManejadorEventosVista.prototype.seleccionarMarcadorDestino我不能使用工厂AdministradorMarcador,它不被认可,我需要这个在视图中的按钮事件中使用,因此不使用范围在控制器 – alex

+0

我可以用以下代码解决问题:“function ManejadorEventosVista(AdministradorMarcador){ this.admMarcador = AdministradorMarcador; }”,因此我可以在ManejadorEventosVista.prototype中使用AdministradorMarcador。选择MarkerOrigin = function(){this.admMarcador.setTipoMarcador(this.admMarcador.MARCADOR_ORIGEN); };“ – alex