2017-01-03 24 views
1

打電話到$模式服務於我的主要模塊,我已經使用的用戶界面,引導模式用於檢查登錄authentication.From運行塊我呼籲人們loginModal服務,但它給錯誤錯誤而從運行阻滯

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); 
     } 
}); 

點此登錄控制器

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

錯誤是:類型錯誤:loginModal是不是app.module.js功能 :87 –

+0

你有你的控制檯任何其他錯誤?您正在使用哪些版本的Angular和ui-bootstrap? – Phil

+0

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

回答

0

可能是因爲你使用的角度service這EXPEC一個構造函數反過來,應該不是返回的東西。

嘗試改用factory,如

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

我已經使用工廠,但它仍然是給出錯 –

+0

TypeError:loginModal.get(...)。then(...)。catch不是函數 –

+0

@SushilWaykar爲什麼你改變你的代碼以包含'.get()'?你不應該改變別的。它應該仍然是'loginModal()。然後(...)' – Phil