未捕获的TypeError:$ rootScope。$ on不是Connectivity Factory中的函数

时间:2016-12-01 11:52:59

标签: javascript angularjs plugins ionic-framework

我有一个需要在离线模式下工作的离子应用。我启动应用程序时出现以下错误。为什么会这样 - 我接下来应该怎么做?

我需要离线模式才能通过应用商店获取它。特别是我有一个谷歌地图位置下拉,需要离线禁用。

services.js:392 Uncaught TypeError: $rootScope.$on is not a function 

这是我的代码。

})*/
  .factory('ConnectivityMonitor', ['$ionicPopup', function($rootScope, $cordovaNetwork, $ionicPopup){

    return {
      isOnline: function(){
        if(ionic.Platform.isWebView()){
          return $cordovaNetwork.isOnline();
        } else {
          return navigator.onLine;
        }
      },
      isOffline: function(){
        if(ionic.Platform.isWebView()){
          return !$cordovaNetwork.isOnline();
        } else {
          return !navigator.onLine;
        }
      },
      startWatching: function(){
        if(ionic.Platform.isWebView()){

          $rootScope.$on('$cordovaNetwork:online', function(event, networkState){
            console.log("went online");
          });

          $rootScope.$on('$cordovaNetwork:offline', function(event, networkState){
            console.log("went offline");
            $ionicPopup.alert({
              title: 'No Internet Connection',
              content: 'This app requires an internet connection.'
            })
              .then(function() {
                //ionic.Platform.exitApp();
              });
          });

        }
        else {
...
        }
      }
    }
  }])

1 个答案:

答案 0 :(得分:2)

.factory('ConnectivityMonitor', ['$ionicPopup', function($rootScope, $cordovaNetwork, $ionicPopup){

您已将$ionicPopup映射到$rootScope

在数组中将所有内容作为字符串注入,或者只编写一个函数,如下所示:

.factory("ConnectivityMonitor", ["$rootScope","$cordovaNetwork", "$ionicPopup", function($rootScope,$cordovaNetwork, $ionicPopup){...}]);

.factory("ConnectivityMonitor", function($rootScope,$cordovaNetwork, $ionicPopup));