错误:undefined不是对象(评估' $ cordovaBarcodeScanner.scan')

时间:2017-02-23 05:02:07

标签: javascript angularjs cordova ionic-framework ngcordova

我花了整整一周的时间尝试每种方法,但我不断重现同样的错误。我知道ngCordova.min.js必须高于Cordova.js。但似乎什么都没有加载我的插件。我访问了ngCordova网站,他们解释说这个错误可能令人沮丧而且难以修复。这是我的文件谢谢

app.js



angular.module('app.controllers', [])
  
.controller('menuCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName
function ($scope, $stateParams) {


}])
   /*
.controller('scannerCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName $ionicPlatform.ready(function() {
function ($scope, $stateParams) {


}])
*/

.controller('scannerCtrl',['$scope','$stateParams',  function($scope, $rootScope, $cordovaBarcodeScanner, $ionicPlatform,stateParams) {




      $scope.scanBarcode = function() {
        $cordovaBarcodeScanner.scan().then(function(imageData) {
            alert(imageData.text);
            console.log("Barcode Format -> " + imageData.format);
            console.log("Cancelled -> " + imageData.cancelled);
        }, function(error) {
            console.log("An error happened -> " + error);
        });
    };
    }])
   

.controller('qRCodeCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName
function ($scope, $stateParams) {


}])

   
.controller('profileCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName
function ($scope, $stateParams) {


}])
      
.controller('signupCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName
function ($scope, $stateParams) {


}])
   
.controller('loginCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller
// You can include any angular dependencies as parameters for this function
// TIP: Access Route Parameters for your page via $stateParams.parameterName
function ($scope, $stateParams) {


}])
 




controller.js



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

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

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

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

    <style type="text/css">
      .platform-ios .manual-ios-statusbar-padding{
        padding-top:20px;
      }
      .manual-remove-top-padding{
        padding-top:0px; 
      }
      .manual-remove-top-padding .scroll{
        padding-top:0px !important;
      }
      ion-list.manual-list-fullwidth div.list, .list.card.manual-card-fullwidth {
        margin-left:-10px;
        margin-right:-10px;
      }
      ion-list.manual-list-fullwidth div.list > .item, .list.card.manual-card-fullwidth > .item {
        border-radius:0px;
        border-left:0px;
        border-right: 0px;
      }
      .show-list-numbers-and-dots ul{
        list-style-type: disc;
        padding-left:40px;
      }
      .show-list-numbers-and-dots ol{
        list-style-type: decimal;
        padding-left:40px;
      }
    </style>

    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
    <script src="js/routes.js"></script>
    
     
    <script src="js/directives.js"></script>
     
    <script src="js/services.js"></script>
    

    <!-- Only required for Tab projects w/ pages in multiple tabs 
    <script src="lib/ionicuirouter/ionicUIRouter.js"></script>
    -->

  </head>
  <body ng-app="app" animation="slide-left-right-ios7">
  <div>
  <ion-side-menus enable-menu-with-back-views="false" data-componentid="side-menu21">
    <ion-side-menu-content>
      <ion-nav-bar class="bar-stable">
        <ion-nav-back-button></ion-nav-back-button>
        <ion-nav-buttons side="left">
          <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
        </ion-nav-buttons>
      </ion-nav-bar>
      <ion-nav-view></ion-nav-view>
    </ion-side-menu-content>
    <ion-side-menu side="left" id="side-menu21">
      <ion-header-bar class="bar-stable">
        <div class="title">Menu</div>
      </ion-header-bar>
      <ion-content ng-controller="menuCtrl" padding="false" class="side-menu-left has-header "></ion-content>
    </ion-side-menu>
  </ion-side-menus>
</div>
  </body>
</html>
&#13;
&#13;
&#13;

index.html(模板)

&#13;
&#13;
<ion-view title="Scanner" id="page2">
  <ion-content padding="true" class="has-header">
  	
  <div class="card">
            <div class="item">
                <button class="button button-block button-positive" ng-click="scanBarcode()">
                    <i class="icon ion-qr-scanner"></i>
                    Scan Now
                </button>
            </div>
        </div>

       
  </ion-content>
</ion-view>
&#13;
&#13;
&#13;

scanner.html(模板)

&#13;
&#13;
0     801650   error    Error: undefined is not an object (evaluating   '$cordovaBarcodeScanner.scan')
scanBarcode@http://192.168.1.73:8100/js/controllers.js:26:31
fn
http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:65429:21
$apply@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:30500:30
http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:65428:19
defaultHandlerWrapper@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:16792:15
eventHandler@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:16780:23
dispatchEvent@[native code]
triggerMouseEvent@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:2953:20
tapClick@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:2942:20
tapMouseUp@http://192.168.1.73:8100/lib/ionic/js/ionic.bundle.js:3018:13
&#13;
&#13;
&#13;

错误撒旦自言自语

this.deliveryService.deliveryCancel(rowInfo.branchId, rowInfo.id).subscribe(
              res => {
                var data = res.json();
                this.getDeliveryList();
                this.msgs.push({ severity: 'success', summary: 'Info', detail: rowInfo.deliveryStatus });
              },
              err => {
                this.errMessage = <any>err;
                this.msgs.push({ severity: 'error', summary: 'Error', detail: this.errMessage });
              }
            );
            
            console.log(data);

File Setup

1 个答案:

答案 0 :(得分:1)

你的代码有一点错误,你忘了注释$ cordovaBarScaner。

&#13;
&#13;
.controller('scannerCtrl',['$scope','$rootScope','$cordovaBarcodeScanner', '$ionicPlatform', '$stateParams',  function($scope, $rootScope, $cordovaBarcodeScanner, $ionicPlatform,stateParams) {




      $scope.scanBarcode = function() {
        $cordovaBarcodeScanner.scan().then(function(imageData) {
            alert(imageData.text);
            console.log("Barcode Format -> " + imageData.format);
            console.log("Cancelled -> " + imageData.cancelled);
        }, function(error) {
            console.log("An error happened -> " + error);
        });
    };
    }])
&#13;
&#13;
&#13;