Inyectando una promesa resuelta en servicio.
Necesito obtener alguna información (un esquema) del servidor antes de configurar una serie de servicios que dependen de esa información.
Mi servidor proporciona un esquema que define varias propiedades de un modelo. En mi código angular, tengo un servicio que obtiene 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;
});
Me gustaría inyectar el objeto del esquema, y no la promesa, en otros servicios que dependen del esquema. $ routeProvider nos permite hacer esto para los controladores:
app.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: 'SomeCtrl',
resolve: {
schema: 'schema'
},
...
});
});
y esto me permite definir SomeCtrl así:
controllers.controller('SomeCtrl', function($scope, schema) {
// schema is an object
...
});
Pero para los servicios, tengo que hacer:
services.factory('SomeService', function(schema) {
// schema is a promise
schema.then(function(schema) {
...
});
});
¿Hay alguna manera de que pueda hacer esto?