2016-05-25 14 views
0

I mit IONIC Framework (AngularJS) unter FehlerAngularJS Ionic Controller Fehler

Ich empfange,

463788 error Error: [ng:areq] http://errors.angularjs.org/1.4.3/ng/areq?p0=PaymentCtrl&p1=not%20a%20function%2C%20got%20undefined 
at Error (native) 
at http://localhost:8100/lib/ionic/js/angular/angular.min.js:6:416 
at Sb (http://localhost:8100/lib/ionic/js/angular/angular.min.js:22:18) 
at Qa (http://localhost:8100/lib/ionic/js/angular/angular.min.js:22:105) 
at http://localhost:8100/lib/ionic/js/angular/angular.min.js:79:497 
at I.appendViewElement (http://localhost:8100/lib/ionic/js/ionic-angular.min.js:17:4463) 
at Object.O.render (http://localhost:8100/lib/ionic/js/ionic-angular.min.js:16:17590) 
at Object.O.init (http://localhost:8100/lib/ionic/js/ionic-angular.min.js:16:16825) 
at I.render (http://localhost:8100/lib/ionic/js/ionic-angular.min.js:17:3419) 
at I.register (http://localhost:8100/lib/ionic/js/ionic-angular.min.js:17:3150) 

Hier arbeite ist mein Code für den Controller.

define(['ionic', 'ionicAngular', 'angular', 
'ngRoute', 'angularAnimate', 'angularSanitize', 'uiRouter'], 
    function (ionic, ionicAngular, angular) { 

     'use strict'; 

     console.log('Payment controller '); 

     var PaymentCtrl = function ($scope, PaymentSvc,$state, $ionicLoading) { 
      /*$scope.phoneNumberVerification = function() { $state,$ionicPopup, 
      console.log('PhoneNumber controller added1 '); 
      $ionicLoading.hide(); 
      $state.go('tab.eateries'); 
     };*/ 


         // When button is clicked, the popup will be shown... 

     }; 
     return PaymentCtrl; 

    }); 

Serveics.js

define(['ionic', 'ionicAngular', 'angular', 
    'ngRoute', 'angularAnimate', 'angularSanitize', 'uiRouter'], 
     function (ionic, ionicAngular, angular) { 

      'use strict'; 
       //console.log('service modules'); 
      var PaymentSvc = function(){ 

        console.log('serverices call');//var svc = this; 

      } 
      return PaymentSvc; 

     }); 



     // });*/ 

payment.js

define(['ionic', 'ionicAngular', 'angular', 
    './modules/payment/controllers/paymentctrl', 
    './modules/payment/services/services', 
    'ngRoute', 'angularAnimate', 'angularSanitize', 'uiRouter'], 
     function (ionic, ionicAngular, angular, 
        paymentCtrl, 
        paymentSvc) { 

      'use strict'; 

      console.log('payment.js modules'); 

      var payment = angular.module('payment', ['ionic']) 
        .controller('PaymentCtrl', paymentCtrl) 
        .service('PaymentSvc',paymentSvc); 
      return payment; 
     }); 

Antwort

1

Keine Notwendigkeit zu injizieren ['angular','ngRoute', 'angularAnimate', 'angularSanitize', 'uiRouter']. Ionic automatisch Winkelanstands injizieren, wenn Sie ['ionic']

injizieren Sie Ihre Controller schreiben direkt

angular.module('starter', ['ionic']).controller('PayCtrl',function ($scope,$state,$ionicLoading,PaymentSvc){ 

//starter is the app name come from ng-app="starter" 

     $ionicLoading.show(); 
     $scope.phoneNumberVerification = function(){ 
       console.log('PhoneNumber controller added1'); 
       $ionicLoading.hide(); 
       $state.go('tab.eateries'); 
     }; 
    }); 

Ich rate Ihnen, Ihr Javascript Projektdateien zu organisieren, um in drei Dateien:

app.js, die enthält

angular.module('starter', ['ionic', 'starter.controllers','starter.services'])..config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 

    .state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl' 
    }).state('app.home', { 
    url: '/home', 
    views: { 
     'tab-home': { 
     templateUrl: 'templates/home.html', 
     controller : 'HomeCtrl' 
     } 
    } 
    }); 
    $urlRouterProvider.otherwise('/app/home'); 
}); 

con troller.js, die Ihre Controller enthält

angular.module('starter.controllers', []).controller('AppCtrl', function('PayCtrl',function ($scope,$state,$ionicLoading,PaymentSvc){ 
     $ionicLoading.show(); 
     $scope.phoneNumberVerification = function(){ 
       console.log('PhoneNumber controller added1'); 
       $ionicLoading.hide(); 
       $state.go('tab.eateries'); 
     }; 
    }); 

service.js, die Sie Verbindungen zum Server enthält

angular.module('starter.services', []).factory('PaymentSvc',function($http,$q){ 

}); 
+0

Ja, ich habe die gleichen 3 Dateien verwendet, die Sie erwähnt haben. aber ich bekomme immer noch den gleichen Fehler. Ich habe die Frage mit jeder Datei aktualisiert. – NovusMobile

+0

Wichtige Dinge. Ich habe das Problem, dass ich die Zahlung als vierten Tab in meine Layout-Registerkarte einlege. – NovusMobile

+0

An welcher ionischen Version arbeiten Sie? – amrography

1

es ist ein Injektionsfehler. Wenn Sie zum Beispiel ['a', 'b', 'c'] injizieren, müssen Sie es in der gleichen Reihenfolge und Menge in Ihrer Funktion haben: function (a, b, c). In Ihrem Fall haben Sie mehr Parameter in der Injektion als die Parameter in Ihrer Controller-Funktion.

+0

Es ist nicht für mich arbeiten. Ich habe die gleiche Änderung hinzugefügt, aber keinen Effekt. Immer noch die gleichen – NovusMobile

+0

Wichtige Dinge. Ich habe das Problem, dass ich die Zahlung als vierten Tab in meine Layout-Registerkarte einlege. – NovusMobile