2017-01-03 5 views
1

In meinem Hauptmodul zu $ ​​modal Service Aufruf habe ich ui-Bootstrap-modal zum Prüfen Login authentication.From Laufsatz Ich habe zu loginModal Dienst namens verwendet, aber es wird geben FehlerFehler während aus laufen Block

TypeError: loginModal is not a function

angular.module('myApp', ['ui.router', 'ui.bootstrap', 'loginServices','leaveServices']). config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 
     $urlRouterProvider.otherwise('/home'); 
     $stateProvider. 
      state('home', { 
       url:'/home', 
       data: { 
        requireLogin: false 
       }, 
       views: { 
        '': { 
         templateUrl: 'partials/templates/assets/home.html' 
        } 
       } 
      }). 
      state('home.about', { 
       url: '/about', 
       templateUrl: 'partials/templates/assets/about.html' 
      }). 
      state('home.contact', { 
       url: '/contact', 
       templateUrl: 'partials/templates/assets/contactUs.html' 
      }). 
      state('/login', { 
       url: '/login', 
       data: { 
        requireLogin: false 
       }, 
       templateUrl: 'partials/login.html', 
       controller: loginUserController 
      }). 
      state('/register', { 
       url:'/register', 
       data: { 
        requireLogin: false 
       }, 
       templateUrl: 'partials/registerUser.html', 
       controller: registerController 
      }). 
      state('/getAllUsers', { 
       url: '/getAllUsers', 
       data: { 
        requireLogin: false 
       }, 
       templateUrl: 'partials/getAllUsers.html', 
       controller: getUsersController 
      }). 
      state('/updateUser', { 
       url : '/updateUser/:id/:name', 
       data: { 
        requireLogin: true 
       }, 
       params: {'id':null, 'name':null}, 
       templateUrl: 'partials/updateUser.html', 
       controller: updateUserController 
      }). 
      state('/userLeave', { 
       url : '/userLeave:name', 
       data: { 
        requireLogin: true 
       }, 
       params: {'name': null}, 
       templateUrl: 'partials/userLeave.html', 
       controller: userLeaveController 
      }). 
      state('/leaveRequest', { 
       url : '/leaveRequest', 
       data: { 
        requireLogin: true 
       }, 
       templateUrl: 'partials/leaveRequest.html' 
      }); 
    }]) 

    .run(function ($rootScope, $state, loginModal) { 
    $rootScope.$on('$stateChangeStart', function (event, toState, toParams) { 
     var requireLogin = toState.data.requireLogin; 
     console.log('going to state '+toState.name); 
     if (requireLogin && typeof $rootScope.currentUser === 'undefined') { 
      event.preventDefault(); 

      loginModal().then(function() { 
        return $state.go(toState.name, toParams); 
       }) 
       .catch(function() { 
        return $state.go('/login'); 
       }); 
     } 
    }); 
}) 
.factory('loginModal', function ($modal, $rootScope) { 

    function assignCurrentUser (user) { 
     $rootScope.currentUser = user; 
     return user; 
    } 

    return function() { 
      var instance = $modal.open({ 
       templateUrl: 'partials/login.html', 
       controller: loginUserController 
      }); 

      return instance.result.then(assignCurrentUser); 
     } 
}); 

hier anmelden Controller

loginUserController.$inject = ['$scope','$http', 'loginFactory', '$location', '$state']; 
function loginUserController($scope,$http,loginFactory,$location, $state){ 

$scope.validateLogin = function(name,password){ 
    $http.get("http://localhost:3010/validateLogin?userName="+name+"&password="+password) 
     .then(function(response) { 
      if(response.data.length != 0) { 
       console.log("logged user data is "+JSON.stringify(response.data)); 
       $state.transitionTo('/userLeave', {name: name}); 
      //  $scope.$close(response); 
      } 
      else 
       $scope.inValidUser = 'Invalid User'; 
     }); 
}; 
$scope.cancel = $scope.$dismiss; 
} 
+1

Fehler ist: Typeerror: loginModal ist keine Funktion bei app.module.js: 87 –

+0

Haben Sie Fehler in Ihrer Konsole? Welche Versionen von Angular und UI-Bootstrap verwenden Sie? – Phil

+0

Skript (src = 'https: //ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js') Skript (src = 'https: //ajax.googleapis.com/ajax /libs/angularjs/1.0.4/angular-resource.min.js ') Skript (src =' http: //angular-ui.github.io/ui-router/release/angular-ui-router.min. js ') Skript (src =' https: //code.jquery.com/jquery-1.11.1.min.js ') Skript (src =' // maxcdn.bootstrapcdn.com/bootstrap/3.2.0/ js/bootstrap.min.js ') –

Antwort

0

sein könnte, weil Sie einen Winkel service welche expec verwenden ts ein Konstruktor, der seinerseits sollte nicht etwas zurückgeben.

Versuchen Sie, eine factory ändern, zB

.factory('loginModal', ... 
+0

Ich habe die Fabrik verwendet, aber es ist immer noch Fehler –

+0

TypeError: loginModal.get (...). dann (...). catch ist keine Funktion –

+0

@SushilWaykar Warum haben Sie Ihren Code geändert, um '.get()'? Du hättest nichts anderes ändern sollen. Es sollte immer noch 'loginModal() sein. Dann (...)' – Phil

Verwandte Themen