cordova plugin hotspot module error angularjs

2019-07-23 08:53发布

问题:

I have taken the sample project from the cordova-plugin-hotspot and tried building it into android application. But when I'm using that sample, I'm getting the module not defined error but I checked that the module has been defined in the html and in angular.module. So please someone help me to figure out what is the actual error. Below is that sample program.

index.html

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
  </head>
  <body ng-app = "starter">
    <!--
      The nav bar that will be updated as we navigate between views.
    -->
    <ion-nav-bar class="bar-stable" ng-controller = "HotSpotCtrl">
      <ion-nav-back-button>
      </ion-nav-back-button>
    </ion-nav-bar>
    <ion-nav-view></ion-nav-view>
  </body>

app.js

function onDeviceReady() {
  // bootstrap app:
  angular.bootstrap(document, ['starter']);
}

if (window.cordova) {
    document.addEventListener('deviceready', onDeviceReady, false);
} else {
  onDeviceReady();
}

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
// 'starter.services' is found in services.js
// 'starter.controllers' is found in controllers.js
angular.module('starter', ['ionic', 'starter.controllers'])

    .run(function ($ionicPlatform) {
        $ionicPlatform.ready(function () {
            // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
            // for form inputs)
            if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
                cordova.plugins.Keyboard.disableScroll(true);

            }
            if (window.StatusBar) {
                // org.apache.cordova.statusbar required
                StatusBar.styleDefault();
            }
        });
    })

    .constant('$ionicLoadingConfig', {
      template: '<ion-spinner></ion-spinner> <br> Loading '
    })

    .config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider) {

        // places them at the bottom for all OS
        $ionicConfigProvider.tabs.position('bottom');

        // Ionic uses AngularUI Router which uses the concept of states
        // Learn more here: https://github.com/angular-ui/ui-router
        // Set up the various states which the app can be in.
        // Each state's controller can be found in controllers.js
        $stateProvider

            // setup an abstract state for the tabs directive
            .state('tab', {
                url: '/tab',
                abstract: true,
                templateUrl: 'templates/tabs.html'
            })

            // Each tab has its own nav history stack:

            .state('tab.hotspot', {
                url: '/hotspot',
                views: {
                    'tab-hotspot': {
                        templateUrl: 'templates/tab-hotspot.html',
                        controller: 'HotSpotCtrl'
                    }
                }
            })

            .state('tab.devices', {
                url: '/devices',
                views: {
                    'tab-devices': {
                        templateUrl: 'templates/tab-devices.html',
                        controller: 'DevicesCtrl'
                    }
                }
            });

        // if none of the above states are matched, use this as the fallback
        $urlRouterProvider.otherwise('/tab/hotspot');

    });

controller.js

angular.module('starter.controllers', [])
  .controller('HotSpotCtrl', function ($scope, $ionicLoading, $timeout) {

    var init = function () {
      $ionicLoading.show();
      // default to WPA2PSK
      $scope.config = {
        mode: 'WPA2PSK'
      };
      cordova.plugins.hotspot.isHotspotEnabled(function (enabled) {
          $scope.isHotSpotActive = enabled;
          $ionicLoading.hide();
        }
      );
    };

    // init controllers
    init();

    // API
    $scope.start = function () {
      $ionicLoading.show();
      cordova.plugins.hotspot.createHotspot(
        $scope.config.ssid, $scope.config.mode, $scope.config.password,
        function () {
          // delay UI refresh
          $timeout(function () {
            $ionicLoading.hide();
            init();
          }, 500);
        }, function () {
          $ionicLoading.hide();
          alert('Hotspot creation failed');
        }
      );
    };

    $scope.stop = function () {
      $ionicLoading.show();
      cordova.plugins.hotspot.stopHotspot(
        function () {
          $ionicLoading.hide();
          $scope.isHotSpotActive = false;
          init();
        }, function () {
          alert('AP disabling failed');
        }
      );
    };
  })
  .controller('DevicesCtrl', function ($scope) {
    var init = function () {
      cordova.plugins.hotspot.isHotspotEnabled(function (enabled) {
          $scope.isHotSpotActive = enabled;
          if (enabled) {
            $scope.status = 'Reading devices ...';
            cordova.plugins.hotspot.getAllHotspotDevices(
              function (response) {
                $scope.status = false;
                $scope.devices = response;
              }, function () {
                $scope.status = false;
                alert('Device listing failed.');
              }
            );
          }
        }, function () {
          $scope.status = false;
        }
      );
    };

    // init controllers
    init();

    // API
    $scope.refresh = function () {
      init()
    };
  });