2016-01-22 90 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