Кордова угловая офлайн проверка

0

У меня есть код ниже, чтобы проверить онлайн/оффлайн в моем приложении cordova.

var networkState = navigator.connection.type;

var states = {};
states[Connection.UNKNOWN]  = 'Unknown';
states[Connection.ETHERNET] = 'Ethernet';
states[Connection.WIFI]     = 'WiFi';
states[Connection.CELL_2G]  = 'Cell2G';
states[Connection.CELL_3G]  = 'Cell3G';
states[Connection.CELL_4G]  = 'Cell4G';
states[Connection.CELL]     = 'Cellgeneric';
states[Connection.NONE]     = 'Nonetwork';
alert(states[networkState]);
if(states[networkState]!='Nonetwork'){
online=true;
}else{
online=false;
}  

И мой угловой контроллер, как показано ниже.

 .controller('MainCtrl',['$scope','$http','$localStorage','$state',function($scope, $http, $localStorage, $state){ 


  if(online==true){

    //code for online
  }else{
    // code for offline
   } 


}])

Я вызвал проверку в событии "deviceready", получив статус. Но моя проблема - deviceready вызывается после запуска моего контроллера. Можно ли проверить состояние сети до запуска углового контроллера?

  • 0
    В вашем примере я не вижу, где вызывается deviceready . Может быть, некоторые элементы отсутствуют. Где вы называете первый блок проверки кода сети?
Теги:
cordova

1 ответ

0

В режиме "Угловая" контроллер выполняется на этапе запуска вашего приложения. Вы можете выполнить некоторый код перед этой фазой, также называемой фазой конфигурации.

Вы shoudl читаете документацию модуля от углового.

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

  • Запускать блоки - выполняться после создания инжектора и использоваться для запуска приложения. Только экземпляры и константы могут быть введены в блоки запуска. Это необходимо для предотвращения дальнейшей конфигурации системы во время работы приложения.

В вашем коде это должно выглядеть так:

angular.module('myModule', []).
config(function(injectables) { // provider-injector
  // This is an example of config block.
  // You can have as many of these as you want.
  // You can only inject Providers (not instances)
  // into config blocks.
}).
run(function(injectables) { // instance-injector
  // This is an example of a run block.
  // You can have as many of these as you want.
  // You can only inject instances (not Providers)
  // into run blocks
});

Не уверен, что я хорошо понял, но это может позволить вам выполнить код перед запуском вашего контроллера :)

Просто подумав о вашем коде... config будет запускаться только один раз, и ваше соединение может меняться со временем (если в автомобиле, идущем от 4G до 3G). Поэтому, возможно, вам придется регулярно проверять или проверять ваш контроллер. Лучшим случаем может быть функция, которую вы вызываете при активации вашего контролера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню