Sto cercando di creare un servizio che sia polimorfico in base a quale modalità è specificata nell'URL. Se il parametro char nel percorso è impostato su "p", voglio utilizzare un servizio PresentMode. Se il parametro char è impostato su "n", voglio utilizzare un servizio NoteMode. Ognuno di questi presenta la stessa interfaccia, ma voglio sceglierne uno alla volta.
Finora la soluzione migliore che ho trovato è una cosa del genere:
var mod = angular.module('modeModule', []);
mod.service('modeService', function($routeParams, presentMode, noteMode) {
if ($routeParams.char === 'p') {
this.mode = presentMode;
} else if ($routeParams.char === 'n') {
this.mode = noteMode;
}
}
mod.service('presentMode', function() {});
mod.service('noteMode', function() {});
Funziona, ma richiede di aggiungere .mode
alla fine di ogni accesso (ad esempio modeService.mode.blah()
. C'è un modo migliore per farlo?