Injetando uma promessa resolvida em serviço
Eu preciso obter algumas informações (um esquema) do servidor antes de configurar um monte de serviços que dependem dessas informações.
Meu servidor fornece um esquema que define várias propriedades de um modelo. No meu código angular, tenho um serviço que recebe este esquema:
services.factory('schema', function($q, $http) {
var deferred = $q.defer();
$http.get('schema/').then(function(response) {
schema = // some function of response.data
deferred.resolve(schema);
}, function() {
deferred.reject('There was a problem fetching the schema');
});
return deferred.promise;
});
Eu gostaria de injetar o objeto de esquema, e não a promessa, em outros serviços que dependem do esquema. $ routeProvider nos permite fazer isso para os controladores:
app.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: 'SomeCtrl',
resolve: {
schema: 'schema'
},
...
});
});
e isso me permite definir SomeCtrl assim:
controllers.controller('SomeCtrl', function($scope, schema) {
// schema is an object
...
});
Mas para serviços, tenho que fazer:
services.factory('SomeService', function(schema) {
// schema is a promise
schema.then(function(schema) {
...
});
});
Existe alguma maneira de fazer isso?