2017-01-03 7 views
1

から$モーダルサービスへの呼び出し中に私はloginModalサービスに呼ばれてきたログインauthentication.FromランブロックをチェックするためのUI-ブートストラップモーダルを使用しているが、それはエラーにエラー私のメインモジュールで実行ブロック

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); 
     } 
}); 
を与えていますここ

あなたはどの角度のExPEC serviceを使用しているので、コントローラ

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

エラーがある:例外TypeError: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') スクリプト(src = 'https://ajax.googleapis.com/ajax /libs/angularjs/1.0.4/angular-resource.min.js ') スクリプト(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 ') スクリプト(src =' // maxcdn.bootstrapcdn.com/bootstrap/3.2.0/ js/bootstrap.min.js ') –

答えて

0

は可能でしたのログインつまり、コンストラクタはではなく、が返されます。

factoryに変更してみてください、例えば

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

私は工場を使用しましたが、それでもエラーが発生しました –

+0

TypeError:loginModal.get(...)。then(...)。catchが関数ではありません –

+0

@SushilWaykarなぜあなたは '.get()'をインクルードするようにコードを変更しましたか?あなたは他の何かを変更する必要はありませんでした。 'loginModal()。then(...)' – Phil

関連する問題