Come posso creare un servizio modale con AngularJS?

3

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?

    
posta Jason Baker 24.12.2014 - 23:26
fonte

1 risposta

1

Non capisco cosa ti piacerebbe che accadesse. Otterrai molta più trazione su questa domanda sul normale stackoverflow.

Ci sono molti stili diversi su questo. Personalmente, tengo i miei servizi liberi dalla logica e li uso solo per scambiare dati e come API centrale. nei miei controller, i dati e i metodi API vengono visualizzati nella vista. Quando ho bisogno di fare qualche logica sui dati o sul metodo, userò un decoratore o filtro angolare.

Per riassumere la mia strada, Servizi - dati e metodi Controller: $ scope e $ watchers (è qui che puoi impostare $ scope.exMethod = exService.exMethod () e quindi chiamare solo exMethod () nel tuo html) Filtri / Decoratori: logica aziendale (inserisci qui la tua logica se)

    
risposta data 03.01.2015 - 03:32
fonte

Leggi altre domande sui tag