Ho un router di utente definito qualcosa di simile (tagliati per semplicità):AngularJS UI Router utilizza la dipendenza risolto in fabbrica/servizio
$stateProvider
.state('someState', {
resolve: {
model: ['modelService', 'info', function (modelService, info) {
return modelService.get(info.id).$promise;
}]
},
controller: 'SomeController'
});
Questo stato someState
sta usando una fabbrica/servizio che dipende da che model
risolvere. E 'definita una cosa del genere, e AngularJS genera sconosciuta fornitore: modelProvider < - modello < - someservice errore qui:
angular
.module('someModule')
.factory('someService', someService);
someService.$inject = ['model'];
function someService(model) { ... }
Tuttavia, utilizzando la stessa model
determinazione all'interno del controllore della questo stato funziona bene:
SomeController.$inject = ['model'];
function SomeController(model) { ... }
Così sto capendo che UI Router sta ritardando il dI del SomeController
fino a quando la volontà che sta accadendo, che permette AngularJS di non gettare un errore. Tuttavia, come mai lo stesso ritardo non sta accadendo quando si mette quella risoluzione come dipendenza da someService
? Le risoluzioni funzionano solo sui controller? E se questo è il caso, come posso usare una risoluzione all'interno di una fabbrica/servizio?
quello che stai chiedendo è tutto come una catena di dipendenza molto circolare. Il servizio non dovrebbe mai dipendere dalla risoluzione, ma è possibile legare i dati al servizio durante la risoluzione – charlietfl