2016-04-11 8 views
11

मैं मैं इस पर गलत हो रहा क्या नहीं समझ सकता मेरी कोड के साथ एक समस्या का सामना करना पड़ रहा में एक समारोह नहीं है .. दिलचस्प चीजें हैं जो एपीआई काफी अच्छा बुला रहा है लेकिन इसकी success समारोह में नहीं जा रहा है orders.pay(ss($scope.ss, $scope.oo)) .success(function (data) {त्रुटि सफलता AngularJS

angular.module('services.orders', ['users.service']) 
    .factory('orders', ['$http', 'user', '$q', function ($http, user, $q) { 
    'use strict'; 

function genericSuccess (res) { 
     return res.data.data; // yes, really. 
    } 


function pay (payment) { 
     return $http.post('v1/payment/authorize', payment) 
     .then(genericSuccess); 
    } 



orders.pay(ss($scope.ss, $scope.oo)) 
      .success(function (data) { 

    //It should called success either it should gone to error but it says 
    //Error:orders.pay(...).success is not a function 
    //can any one suggest how to solve it 

      notify.message('Thank you!'); 
      }).error(function (data) { 
      notify.message('Error: ' + data.data.message); 
     }); 
+0

'ऑर्डर' फ़ंक्शन कैसा दिखता है? अगर आप कर सकते हैं, इसे पोस्ट करें। – mtndesign

+2

'success' और '.error' को बहिष्कृत किया गया है, भले ही यह आपके मुद्दे का कारण न हो, आपको वास्तव में उनका उपयोग करने से बचना चाहिए। इसके बजाए '.then' और '.catch' का उपयोग करें। – ste2425

उत्तर

15
function genericSuccess (res) { 
    return res.data.data; // yes, really. 
} 

function pay (payment) { 
    return $http.post('v1/payment/authorize', payment).then(function(success) { 
    return genericSuccess(success); 
    }); 
} 

कि कोशिश करो, देखना है कि अगर बेहतर है?

5

मुद्दा अपने में चल तथ्य यह है कि .success और .error एक आवरण, एक अमूर्त है कि केवल $http उजागर, कोर वादा नहीं वस्तु है।

मुद्दा यह है कि $http से लौटाया गया वादा इन अतिरिक्त गुणों के लिए बढ़ाया गया है, हालांकि बाद के वादे नहीं हैं। आपकी सेवा में आपका पहला .then एक सामान्य वादा वापस कर रहा है जिसमें .success विधि नहीं है।

यह उन कारणों में से एक है जिन्हें इसे बहिष्कृत किया गया है, आपको इसके बजाय .then और .catch का उपयोग करना चाहिए।

तो यह काम करेगा:

$http.get().success().then();

लेकिन यह ऐसा नहीं करेंगे:

$http.get().then().success();

लेकिन इसके बजाय अपने वास्तव में क्या करना चाहिए:

$http.get().then().then();

निम्नलिखित फीडल देखें जो इसे Fiddle

आशा करता है कि यह समझ में आता है।

11

आप कोणीय प्रलेखन https://docs.angularjs.org/api/ng/service/$http

success और error में देख सकते हैं उपलब्ध नहीं हैं। आप कुछ इस तरह कर सकते हैं आप अभी भी अपने कोड में .success और .error उपयोग करना चाहते हैं:

angular.module('services.orders', ['users.service']) 
    .factory('orders', ['$http', 'user', '$q', function ($http, user, $q) { 
    'use strict'; 

    function genericSuccess(res) { 
     return res.data.data; // yes, really. 
    } 


    function pay(payment) { 
     var successCallback, errorCallback; 
     function successFn(callback) { 
     if (typeof callback == 'function'){ 
      successCallback = callback; 
     } 

     return successErrorResponse; 
     } 

     function errorFn(callback) { 
     if (typeof callback == 'function') { 
      errorCallback = callback; 
     } 

     return successErrorResponse; 
     } 

     var successErrorResponse = { 
     success: successFn, 
     error: errorFn 
     }; 


     $http.post('v1/payment/authorize', payment) 
     .then(
      function (response) { 
      if(successCallback) { 
       successCallback(response) 
      } 
      }, 
      function (response) { 
      if(errorCallback) { 
       errorCallback(response) 
      } 
      }); 




     return successErrorResponse; 


    } 


    orders.pay(ss($scope.ss, $scope.oo)) 
     .success(function (data) { 

     //It should called success either it should gone to error but it says 
     //Error:orders.pay(...).success is not a function 
     //can any one suggest how to solve it 

     notify.message('Thank you!'); 
     }).error(function (data) { 
     notify.message('Error: ' + data.data.message); 
    }); 

    }]) 

लेकिन तुम सच में नया कोणीय एपीआई अपनाने की जानी चाहिए।

+0

हाय डैनियल क्या आप इस ques का जवाब दे सकते हैं: https://stackoverflow.com/questions/44369082/excel-download-is-not-working-in-mean-stack-app/44373532#44373532 – Vinoth

+0

मुझे आश्चर्य है कि उनके पास कोई अन्य है इन कार्यों का नाम बदलने के विशिष्ट कारण, बस उन्हें नाम बदलने के अलावा। –

संबंधित मुद्दे