在我设置一堆依赖于该信息的服务之前,我需要从服务器获取一些信息(模式)。
我的服务器提供了一个模式来定义模型的各种属性。在我的角度代码中,我有一项服务可以获取此架构:
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;
});
我想将模式对象而不是承诺注入到依赖于模式的其他服务中。$routeProvider 允许我们为控制器执行此操作:
app.config(function($routeProvider) {
$routeProvider.
when('/', {
controller: 'SomeCtrl',
resolve: {
schema: 'schema'
},
...
});
});
这让我可以像这样定义 SomeCtrl:
controllers.controller('SomeCtrl', function($scope, schema) {
// schema is an object
...
});
但对于服务,我必须这样做:
services.factory('SomeService', function(schema) {
// schema is a promise
schema.then(function(schema) {
...
});
});
有什么办法可以做到这一点吗?