2016-12-26 4 views
0

Я пытаюсь вызвать метод обслуживания в Angularjs. Метод службы называется «хорошо», однако он НЕ возвращает никакого значения функции, вызвавшей ее в контроллере.

Буду рад, если кто-нибудь сможет мне помочь. Это мой код ниже.

logosStreams.factory("processPaypal", ['$http', '$timeout', '$q', '$state',function($http, $timeout, $q, $state){ 
    var transCall = {}; 
    var transcallPromise2 = $q.defer(); 

    return { 

    onSuccesfulPayment: function(payment) { 
     console.log("payment success: " + JSON.stringify(payment, null, 4)); 
transcallPromise2.resolve(payment); 
    }, 
    onAuthorizationCallback: function(authorization) { 
     console.log("authorization: " + JSON.stringify(authorization, null, 4)); 
     //return authorization; 
    }, 
    createPayment: function(data) { 
     // for simplicity use predefined amount 
     var paymentDetails = new PayPalPaymentDetails("0", "0", "0"); 
     var payment = new PayPalPayment(data.amt, "USD", data.name, "Sale", 
     paymentDetails); 
     return payment; 
    }, 

    buyInFutureBtn : function(e) { 
     // future payment 
     PayPalMobile.renderFuturePaymentUI(this.onAuthorizationCallback, this.onUserCanceled); 
    }, 

    profileSharingBtn : function(e) { 
     // profile sharing 
     PayPalMobile.renderProfileSharingUI(["profile", "email", "phone","address", "futurepayments", "paypalattributes"], 
     this.onAuthorizationCallback, this.onUserCanceled); 
    }, 

    buyNowBtn : function(data) { 

     // single payment 
     PayPalMobile.renderSinglePaymentUI(this.createPayment(data), this.onSuccesfulPayment, this.onUserCanceled); 
     return transcallPromise2.promise; 

    }, 

    onPrepareRender: function() { 

    }, 

    onUserCanceled: function(result) { 
     console.log(result); 
       transcallPromise2.reject(result); 

    } 

} 

}]) 

Внутри вызова КОНТРОЛЛЕР buyNowBtn Methond

processPaypal.buyNowBtn($scope.MMParams).then(function(response){ 
      console.log(response); 
    }) 
+0

Вы уверены, что этот метод не возвращает обещание? Что произойдет, если вы выполните 'console.log (processPaypal.buyNowBtn ($ scope.MMParams))'? Возможно, это обещание отвергнуто или что оно не разрешено. – ppham27

+0

Есть ли ошибки в консоли? –

+0

@CharanCherry Да иногда я получаю: «TypeError: Не могу прочитать свойство», затем «неопределенного» –

ответ

0

Одна из возможных причин, что она не возвращает значение, что ваше обещание не будет решена. Ваше обещание будет разрешено только при вызове методаSuccessfulPayment(). Можете ли вы также ввести код, в котором выполняется ваша функция onSuccessfulPayment().

0

Вы вернули объект обещания на выполнение функции buyNow ... попытайтесь вернуть обещание как часть возвращаемого объекта, в котором вы вернули все функциональные подключения.

+0

. Пожалуйста, вы можете быть немного практичным с примером. Я не получаю ваш ответ хорошо, спасибо –

Смежные вопросы