해당 정보에 의존하는 서비스를 설정하기 전에 서버에서 일부 정보 (스키마)를 가져와야합니다.해결 된 약속을 서비스에 삽입
내 서버는 모델의 다양한 속성을 정의하는 스키마를 제공합니다. 스키마에 의존하는 다른 서비스로 내가 스키마 객체를 삽입하고 싶은
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을 정의 할 수 있습니다 :
services.factory('SomeService', function(schema) {
// schema is a promise
schema.then(function(schema) {
...
});
});
인가 :
controllers.controller('SomeCtrl', function($scope, schema) {
// schema is an object
...
});
그러나 서비스
, 내가해야 할 내가 할 수있는 방법이 있니?
아니에 대한
샘플 코드, 즉, 적어도 지금은 어떻게 작동하는지 그냥. – aet
각도 라우터는 컨트롤러를 인스턴스화하기 전에 해결/거부 할'resolve' 내의 값을 대기합니다. 그런 다음 로컬 값을 사용하여 컨트롤러에 주입합니다 (각 주입기는 현지인을 선호합니다). TL : 당신은 두 개의 서로 다른 스키마를 사용하고 있습니다. –