/ / तुरंत कार्य का आह्वान करें और $ स्कोप में कॉल करें - जावास्क्रिप्ट, एंगुलरज, आईलाइफ

तुरंत कार्यवाही का आह्वान करें और $ स्कोप में कॉल करें - जावास्क्रिप्ट, कोणीय, iife

मैं एक एंगुलरजेएस एप्लिकेशन पर काम करने में व्यस्त हूं, जो एक एपीआई से डेटा प्राप्त करता है। हालांकि मैं सोच रहा हूं कि क्या कोई कार्यक्षेत्र में किसी फ़ंक्शन को सीधे आमंत्रित करने और सामान्य रूप से कॉल करने की संभावना है।

मेरे नियंत्रक में यही है:

var self = this;
$scope.refreshData = (function() {
$http({
method: "GET",
url: "./test-api/testdata.php"
})
.success(function(data) {
self.apiData = data;
});
console.log("Refresh executed");
})();

$interval(function() {
console.log("Refresh called");
$scope.refreshData();
}, 60000);

यह लॉग:

Refresh executed
angular.js:13540 TypeError: $scope.refreshData is not a function

मुझे पता है कि मैं इसे एक सामान्य फ़ंक्शन में बदल सकता हूं और इसके साथ कॉल कर सकता हूं $scope.refreshData(), लेकिन मैं सोच रहा था कि क्या एंगुलरजेएस में इसके लिए कोई तरीका है।

उत्तर:

उत्तर № 1 के लिए 1

$ गुंजाइश.refreshData यहां अपरिभाषित है क्योंकि आपके द्वारा इसे दिया गया मूल्य IIFE द्वारा लौटाया गया मान है। इसे काम करने के लिए, आपको निम्नलिखित कार्य करने चाहिए:

var self = this;
($scope.refreshData = function() {
$http({
method: "GET",
url: "./test-api/testdata.php"
})
.success(function(data) {
self.apiData = data;
});
console.log("Refresh executed");
})();

$interval(function() {
$scope.refreshData();
console.log("Refresh called");
}, 60000);

पुनश्च: आप इसके बारे में अधिक पढ़ सकते हैं यहाँ.