0

我試圖使用$ ionicPopup在我的服務。其實,當我使用它控制器正常運行。請點擊按鈕,檢查 這裏是plunker http://plnkr.co/edit/wIss45ijr0DfvUVB1GPG?p=preview爲什麼警報在使用服務時不顯示?

但是,當我在工廠用它給錯誤。請檢查控制檯中的錯誤。

錯誤:最大調用堆棧大小超過

http://plnkr.co/edit/l3rvPB7AZV1WIRbMEnXd?p=preview

ap.factory('utlity', ['$ionicPopup',function($ionicPopup) { 
    function showOtcresult(message){ 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Alert', 
      template: message.toString() 
     }); 
     alertPopup.then(function(res) { 
      console.log('Thank you for not eating my delicious ice cream cone'); 
     }); 
    } 
    return { 
     showOtcAlert:function showOtcresult(message){ 
      showOtcresult(message) 
     } 
    } 
}]); 

回答

0

這裏的問題是到相同的名稱造成循環調用兩個功能

showOtcresult

return { 
    showOtcAlert: function whateverNameForDebug(message) { 
    showOtcresult(message) 
    } 
} 
3

沒有必要在函數聲明的名稱,因爲它會通過調用屬性鍵showOtcAlert執行,所以你需要做的:

return { 
     showOtcAlert:function (message){ 
      showOtcresult(message) 
     } 
    } 

Plunker

+0

有一個很好的需求函數名,如果你想從匿名函數而地獄脫身調試 – maurycy