2016-09-22 6 views
1

J'ai un formulaire dans lequel j'enregistrer quelques détails et télécharger un fichier. J'ai une usine à partir de laquelle je reçois des données. Quand j'utilise ng-file-upload, l'usine n'est pas définie. Voici le code:l'usine est indéfini lors de l'utilisation ng-file-upload

 angular.module('tollApp') 
    .controller('mstrEmployeeCtrl',['Upload','$window', 
     function(Upload,$window,$scope,$http,$timeout,$filter,$mdToast,userDetailsFactory){ 

     $scope.ipForHttp = userDetailsFactory.getUserDetailsFromFactory().ipAddress; 
    //`userDetailsFactory` is undefined 
     $scope.SaveData = function(){ 
      // $scope.dobObj = new Date($scope.Emp.EmpDoB); 
      if ($scope.myform.$valid && $scope.passwordEqual) { 
      Upload.upload({ 
       url: '$scope.ipForHttp+"addEmployee?EmpID="+$scope.Emp.EmpID, 

       data:{file:file} //pass file as data, should be user ng-model 
      }) 
      .then(function(response){ 
       $scope.error=response.data.code; 
       console.log(JSON.stringify(response)); 
       console.log($scope.error+" SCOPE"); 

      }) 
       $scope.submitted = false; 
      } 
     }; 

} 
]); 

L'erreur:

angular.min.js:117 TypeError: Cannot read property 'getUserDetailsFromFactory' of undefined 
at new <anonymous> (http://192.168.1.19/public/javascripts/mstrEmployeeCtrl.js:4:38) 
at Object.instantiate (http://192.168.1.19/public/javascripts/angular.min.js:41:477) 
at http://192.168.1.19/public/javascripts/angular.min.js:90:3 
at Object.link (http://192.168.1.19/node_modules/angular-route/angular-route.min.js:7:274) 
at http://192.168.1.19/public/javascripts/angular.min.js:16:230 
at ia (http://192.168.1.19/public/javascripts/angular.min.js:81:35) 
at n (http://192.168.1.19/public/javascripts/angular.min.js:66:176) 
at g (http://192.168.1.19/public/javascripts/angular.min.js:58:429) 
at http://192.168.1.19/public/javascripts/angular.min.js:58:67 
at http://192.168.1.19/public/javascripts/angular.min.js:62:430 <div data-ng-view="" class="ng-scope" data-ng-animate="1"> 

L'usine qui est undefined:

angular.module('tollApp') 
.controller('indexController', function($scope,$http,$window,userDetailsFactory){ 
    $scope.usernameFromServer={}; 
    $scope.getUserDetails = function(){ 
     $http({ 
      method:'GET', 
      url:'http://192.168.1.19:80/getUserDetails' 
     }) 
     .then(function(response){ 

      // console.log(JSON.stringify(response)); 
      userDetailsFactory.setUserDetailsInFactory(response.data); 
     $scope.usernameFromFactory = userDetailsFactory.getUserDetailsFromFactory().usernameFromSession; 

      // $scope.usernameFromServer = userDetailsFactory.getUserDetailsFromFactory().username; 
      // console.log(JSON.stringify($scope.usernameFromFactory)+"usernameFromFactory"); 
     }) 
    } 
    $scope.logout = function(request,response){ 
     $http({ 
      method:'GET', 
      url:'/logout' 
     }) 
     .then(function(response){ 
      console.log(JSON.stringify(response)); 
      if(response.data=="logout"){ 
       $window.location.href="http://192.168.1.19:80/login"; 
      } 
     }) 
    } 
    console.log("indexController"); 
}).factory('userDetailsFactory',function(){ 
    var user = {}; 
    return { 
     setUserDetailsInFactory : function(val){ 
      user.useridFromSession = val[0].UserID; 
      user.usernameFromSession = val[0].UserName; 
      user.userroleFromSession = val[0].UserRole; 
      user.clientidFromSession = val[0].ClientID; 
      user.ipAddress = "http://192.168.1.19:80/"; 
      // user.ipAddress = "http://easypaytoll.com/"; 
      // console.log("in set "+user.clientidFromSession); 
     }, 
     getUserDetailsFromFactory : function(){ 
      return user; 
     } 
    }; 
}); 

Répondre

0

C'est un problème d'injection. Vous devez mettre le userDetailsFactory dans le tableau:

angular.module('tollApp') 
    .controller('mstrEmployeeCtrl',['Upload','$window','$scope', '$http','$timeout','$filter','$mdToast','userDetailsFactory' 
     function(Upload,$window,$scope,$http,$timeout,$filter,$mdToast,userDetailsFactory){ 

Modifier 1 Votre erreur est claire: userDetailsFactory n'est pas défini. Comment avez-vous défini cette usine? Est-ce dans le même module? Si non, avez-vous ajouté son module aux dépendances du module de l'application?

+0

J'ai essayé cela ... cela n'a pas fonctionné. – Abhi

+0

Le problème initial était que 'userDetailsFactory' n'était pas défini. La solution est d'injecter. Quelle erreur avez-vous maintenant? – Zakaria

+0

Je reçois la même erreur même après l'injection – Abhi