その情報に依存する一連のサービスをセットアップする前に、サーバーから何らかの情報 (スキーマ) を取得する必要があります。
私のサーバーは、モデルのさまざまなプロパティを定義するスキーマを提供します。私のAngularコードには、このスキーマを取得するサービスがあります:
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;
});
スキーマに依存する他のサービスに、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) {
...
});
});
これを行う方法はありますか?