meaning - angularjs tutorial pdf




Angular.js में AJAX कॉल करने का सबसे अच्छा अभ्यास क्या है? (3)

मैं इस लेख को पढ़ रहा था: http://eviltrout.com/2013/06/15/ember-vs-angular.html

और यह कहा,

सम्मेलनों की कमी के कारण, मुझे आश्चर्य है कि कितने कोणीय परियोजनाएं खराब प्रथाओं पर भरोसा करती हैं जैसे एजेक्स सीधे नियंत्रकों के भीतर कॉल करता है? निर्भरता इंजेक्शन के कारण, डेवलपर्स राउटर पैरामीटर को निर्देशों में इंजेक्शन दे रहे हैं? क्या नौसिखिया एंगुलरजेएस डेवलपर्स अपने कोड को इस तरह से तैयार करने जा रहे हैं कि एक अनुभवी एंगुलरजेएस डेवलपर का मानना ​​है कि वह मूर्ख है?

मैं वास्तव में अपने Angular.js नियंत्रक से $http कॉल कर रहा हूँ। यह एक बुरा अभ्यास क्यों है? तब $http कॉल करने के लिए सबसे अच्छा अभ्यास क्या है? और क्यों?


मैंने किसी ऐसे व्यक्ति के लिए उत्तर दिया जो कोणीय में पूरी तरह से सामान्य वेब सेवा चाहता था। मैं बस इसे प्लग करने की अनुशंसा करता हूं और यह आपके सभी वेब सेवा कॉलों का ख्याल रखेगा बिना उन्हें स्वयं कोड करने की आवश्यकता के। जवाब यहां है:

https://.com/a/38958644/5349719


सबसे अच्छा अभ्यास $http कॉल को एक 'सेवा' में संक्षिप्त करना होगा जो आपके नियंत्रक को डेटा प्रदान करता है:

module.factory('WidgetData', function($http){
    return {
        get : function(params){
            return $http.get('url/to/widget/data', {
                params : params
            });
        }
    }
});

module.controller('WidgetController', function(WidgetData){
    WidgetData.get({
        id : '0'
    }).then(function(response){
        //Do what you will with the data.
    })
});

इस तरह के $http कॉल को सारणी करने से आप इस कोड को एकाधिक नियंत्रकों में पुन: उपयोग करने की अनुमति देंगे। यह आवश्यक हो जाता है जब इस डेटा के साथ इंटरैक्ट करने वाला कोड अधिक जटिल हो जाता है, शायद आप अपने नियंत्रक में इसका उपयोग करने से पहले डेटा को संसाधित करना चाहते हैं, और उस प्रक्रिया के परिणाम को कैश करें ताकि आपको इसे फिर से संसाधित करने में समय बिताना पड़े।

आपको 'सेवा' के बारे में सोचना चाहिए जो आपके आवेदन का उपयोग कर सकते हैं डेटा के एक प्रतिनिधित्व (या मॉडल) के रूप में।


संपादित करें: यह उत्तर प्राथमिक रूप से संस्करण 1.0.X पर केंद्रित था। भ्रम को रोकने के लिए इसे आजकल, 2013-12-05 के अनुसार कोणीय के सभी मौजूदा संस्करणों के सर्वोत्तम जवाब को प्रतिबिंबित करने के लिए बदला जा रहा है।

विचार एक ऐसी सेवा बनाना है जो लौटाए गए डेटा का वादा करता है, फिर उसे अपने नियंत्रक में कॉल करें और अपने $ स्कोप संपत्ति को पॉप्युलेट करने के वादे को संभालें।

सेवा

module.factory('myService', function($http) {
   return {
        getFoos: function() {
             //return the promise directly.
             return $http.get('/foos')
                       .then(function(result) {
                            //resolve the promise as the data
                            return result.data;
                        });
        }
   }
});

नियंत्रक:

वादे को then() विधि को संभालें और डेटा को इससे बाहर निकालें। $ स्कोप संपत्ति सेट करें, और जो कुछ भी आपको करने की आवश्यकता हो सकती है।

module.controller('MyCtrl', function($scope, myService) {
    myService.getFoos().then(function(foos) {
        $scope.foos = foos;
    });
});

इन-व्यू वादा संकल्प (केवल 1.0.एक्स):

कोणीय 1.0.एक्स में, यहां मूल उत्तर का लक्ष्य, वादे दृश्य द्वारा विशेष उपचार प्राप्त करेंगे। जब वे हल होते हैं, तो उनका हल मूल्य मूल्य के लिए बाध्य होगा। इसे 1.2.एक्स में हटा दिया गया है

module.controller('MyCtrl', function($scope, myService) {
    // now you can just call it and stick it in a $scope property.
    // it will update the view when it resolves.
    $scope.foos = myService.getFoos();
});




angularjs