2017-01-05 46 views
0

我有一個loginController.js,loginService.js,app.js和視圖頁面Angularjs錯誤:應用程序沒有定義

app.js

var validation = angular.module('validationApp', ['ui.router','ngDialog','ngSanitize','angularSpinner']); 
 
validation.config(function ($stateProvider, $urlRouterProvider) { 
 
    $urlRouterProvider.otherwise('/login'); 
 
    $stateProvider 
 
    .state('login', { 
 
     url : '/login', 
 
     views: { 
 
      "mainView": { 
 
       controller: 'loginController', 
 
       templateUrl: '/public/app/login/loginView.phtml' 
 
      }, 
 
     } 
 
    }).run(['$rootScope', '$location', '$http', function ($rootScope, $location, $http) { 
 
    
 
    $rootScope.globals = JSON.parse(localStorage.getItem('globals')) || {}; 
 
    if ($rootScope.globals.currentUser) { 
 
     $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.globals.currentUser.authdata; 
 
    } 
 
    $rootScope.$on('$locationChangeStart', function (event, next, current) { 
 

 
     var loggedIn = $rootScope.globals.currentUser; 
 
     if (!loggedIn) { 
 
      $location.path('/login'); 
 
     } else if (loggedIn && $location.path() == '/login') { 
 
      $location.path('/validation'); 
 
     } 
 
    }); 
 
    
 
}]);

loginService.js

app.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) { 
 
    var service = {}; 
 
    
 
    service.Login   = Login; 
 
    service.SetCredentials = SetCredentials; 
 
    service.ClearCredentials = ClearCredentials; 
 

 
    return service; 
 
    function Login(user, callback) 
 
    { 
 
     var request = $http({ 
 
      method : "post", 
 
      url  : "/app/index/login", 
 
      data : { 
 
         userEmail: user.userEmail, 
 
         password: user.password 
 
         } 
 
     }).success(function (response, status, headers, config) { 
 
      callback(response); 
 
     }); 
 
    };

loginController.js

validation.controller('loginController',['$scope','$http', '$location','loginService',function($scope,$http,$location,loginService) { 
 
\t \t \t 
 
    
 
     $scope.submitForm = function(user) { 
 

 
     $http({ 
 
      method: 'post', 
 
      url: '/index.php/home/create', 
 
      data: { 
 
       username:$scope.user.userName, 
 
       password:$scope.user.password, 
 
      }, 
 
      headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
 
\t \t }).success(function(response){ 
 
        loginService.SetCredentials(response.userData); 
 
        ..............................

在執行我的代碼,我得到這樣的錯誤:

1.app不loginService.js

定義

2.錯誤:$ inject或:unpr 未知提供商 未知提供商:loginServiceProvider < - login服務< - LoginController中

我在angularjs.so新的請幫我解決這個問題。

+2

在你loginService.js驗證替換應用@student – Shiva

+0

雅這個錯誤造成的。 .that – User09111993

+0

@student你可能想考慮不使用這種方法!您應該更好地在您的每個文件中爲您的ngApp請求角色,以便用全局範圍內的變量消除此問題。看看我的答案或Giovani的答案。 – Tobi

回答

2

更sofisticat編輯aproach將是在每個文件中獲得ngApp。這可以消除目前沒有引用正確的全局變量的問題('不要關注全局範圍'也是您可能要考慮的一個語句)。

angular.module('validationApp').controller(...) 

angular.module('validationApp').factory(...) 
+0

***謝謝*** – User09111993

0

此時應更換validation.factory代替app.factory

1

變化

FROM

app.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) { 

TO

validation.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) { 
1

1.app is not defined in loginService.js

正是它說,你正在使用的應用變量,但它不是在login服務的定義(或任何其他js文件的)。

在loginService中替換以下內容。JS

app.factory 

angular.module('validationApp').factory 

2.Error: $injector:unpr Unknown Provider Unknown provider: loginServiceProvider <- loginService <- loginController

,因爲錯誤的你在做loginService.js

相關問題