मैं कुछ डेटा का उपयोग कर रहा हूं जो कई पृष्ठों में एक विश्वसनीय सेवा से है। तो मैं इसके लिए कोणीय कारखानों का उपयोग कर रहा हूं। इसलिए, मुझे सर्वर से एक बार डेटा प्राप्त करना होगा, और हर बार मुझे उस परिभाषित सेवा के साथ डेटा मिल रहा है। एक वैश्विक चर की तरह।
var myApp = angular.module('myservices', []);
myApp.factory('myService', function($http) {
$http({method:"GET", url:"/my/url"}).success(function(result){
return result;
});
});
मेरी नियंत्रक में मैं के रूप में इस सेवा का उपयोग कर रहा:
function myFunction($scope, myService) {
$scope.data = myService;
console.log("data.name"+$scope.data.name);
}
इसकी मेरी आवश्यकताओं के अनुसार मेरे लिए ठीक काम कर रहा यहाँ नमूना है। लेकिन यहां समस्या यह है कि, जब मैं अपने वेबपृष्ठ में पुनः लोड करता हूं तो सेवा को फिर से कॉल किया जाएगा और सर्वर के लिए अनुरोध किया जाएगा। यदि किसी अन्य फ़ंक्शन निष्पादन के बीच में जो "परिभाषित सेवा" पर निर्भर है, तो यह "कुछ" जैसी त्रुटि को अपरिभाषित कर रहा है। इसलिए जब तक सेवा लोड नहीं हो जाती है, तब तक मैं अपनी स्क्रिप्ट में इंतजार करना चाहता हूं। मैं उसे कैसे कर सकता हूँ? क्या वैसे भी angularjs में ऐसा करते हैं?
यह मेरी समस्या हल हो गया !!! किसी और के लिए, मेरे पास एक ड्रॉपडाउन था जिसके लिए AJAX कॉल से डेटा की आवश्यकता थी, इसलिए जब दायरा बनाया गया था, तो डेटा उपलब्ध नहीं था। इस स्थगित होने के साथ, दायरे को AJAX कॉल से आने वाले डेटा के लिए असाइन किया जा सकता है। –
@ मिकेल: मेरे यहां एक और सवाल है। आपकी myFuction() कॉल तुरंत वापस आ जाएगी लेकिन वह वादा .थ() बाद में कॉल करेगा। मुझे ऐसा करने की क्या ज़रूरत है ताकि myFuction() कॉल वापस नहीं आएगा .then() फ़ंक्शन निष्पादन समाप्त करता है। 'फ़ंक्शन मेरा फ़ंक्शन ($ स्कोप, myService) { var myDataPromise = myService.getData(); myDataPromise.then (समारोह (परिणाम) { $ scope.data = परिणाम; console.log ("data.name" + $ scope.data.name); }); console.log ("यह तब डेटा.नाम से पहले मुद्रित हो जाएगा। और मुझे वह नहीं चाहिए।"); } ' – Sujoy