Сетевой плагин ngCodova не работает с контроллером

#angularjs #cordova #ionic-framework #ngcordova

#angularjs #кордова #ionic-framework #ngcordova

Вопрос:

Я использую плагин для получения статуса и типа подключения моего мобильного устройства через приложение. Но плагин работает только внутри $ionicPlatform.ready , по крайней мере, это случилось со мной, когда я запускаю контроллер, результатом типа соединения является unknow .

Ссылка на плагин: Ссылка на установщик сетевого плагина: установщик CLI

Код

 angular.module('starter', ['ionic', 'ngCordova'])
    .run(startApp)
    .controller('networkCtrl', networkCtrl);

startApp.$inject = ['$ionicPlatform', '$cordovaNetwork'];

function startApp($ionicPlatform, $cordovaNetwork) {

    $ionicPlatform.ready(function() {

        if (window.cordova amp;amp; window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            cordova.plugins.Keyboard.disableScroll(true);
        }

        if (window.StatusBar) {
            StatusBar.styleDefault();
        }

        var netInfo;
        netInfo = $cordovaNetwork.getNetwork();
        console.log(netInfo); //wifi, 4G, 3G, etc.

    });

}

networkCtrl.$inject = ['$scope', '$cordovaNetwork'];

function networkCtrl($scope, $cordovaNetwork) {

    var netInfo;
    netInfo = $cordovaNetwork.getNetwork();
    console.log(netInfo); //unknow

}
  

Ответ №1:

Добавьте это внутрь document.addEventListener("deviceready", function () {

 function networkCtrl($scope, $cordovaNetwork) {
    $scope.networkType = null;
    $scope.connectionType = null;
    document.addEventListener("deviceready", function () {
      $scope.networkType = $cordovaNetwork.getNetwork();
      if ($cordovaNetwork.isOnline()) {
        $scope.connectionType = 'Online';
      }
      else if ($cordovaNetwork.isOffline()) {
        $scope.connectionType = 'Offline';
      }
      else {
        $scope.errorMsg = 'Error getting isOffline / isOnline methods';
      }
    }, false);
 });
  

Комментарии:

1. Хорошо, я попробую это, я вернусь

2. Работает отлично, спасибо, я добавляю событие click с помощью ng-click, чтобы получить информацию о сети при попытке входа в систему без Интернета.