使用服务时为什么不显示警报?

时间:2015-06-25 10:30:14

标签: angularjs angularjs-directive angularjs-scope angular-ui-router ionic-framework

我正在尝试在我的服务中使用$ 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)
      }
  }
}]);

2 个答案:

答案 0 :(得分:3)

函数声明中不需要名称,因为它将通过调用属性键showOtcAlert来执行,因此您需要这样做:

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

Plunker

答案 1 :(得分:0)

这里的问题是导致循环调用的两个函数的相同名称

showOtcresult

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