मुझे उस जानकारी पर निर्भर सेवाओं का एक समूह स्थापित करने से पहले सर्वर से कुछ जानकारी (एक स्कीमा) प्राप्त करने की आवश्यकता है।सेवा में एक हल किए गए वादे को इंजेक्शन
मेरा सर्वर एक स्कीमा प्रदान करता है जो मॉडल के विभिन्न गुणों को परिभाषित करता है।
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
कोणीय राउटर नियंत्रक को तत्काल करने से पहले हल/अस्वीकार करने के लिए 'समाधान' के मानों के लिए प्रतीक्षा करता है। फिर यह नियंत्रक में इंजेक्ट करने के लिए स्थानीय मानों का उपयोग करता है (कोणीय इंजेक्टर स्थानीय लोगों को पसंद करता है)। टीएल; डीआर: आप दो अलग-अलग 'स्कीमा' के साथ काम कर रहे हैं। –