Angularjs错误:app未定义

时间:2017-01-05 07:24:38

标签: angularjs

我有一个loginController.js,loginService.js,app.js和一个视图页面

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) {
			
    
        $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'}
		}).success(function(response){
                     loginService.SetCredentials(response.userData);
                    ..............................

执行我的代码时遇到如下错误:

1.app未在loginService.js中定义

2.错误:$ injector:unpr 未知的提供商 未知提供者:loginServiceProvider< - loginService< - loginController

我是angularjs.so的新人,请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

更加软化的方法是在每个文件中获取ngApp。这样就消除了您当前没有引用正确的全局变量的问题(“不要将全局范围设置为”也是您可能需要考虑的语句)。

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

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

答案 1 :(得分:1)

更改

发件人

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

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

答案 2 :(得分:1)

  

1.app未在loginService.js中定义

正是它所说的,你正在使用app变量,但它并没有在loginService(或任何其他js文件)中定义。

在loginService.js中替换以下内容

app.factory

angular.module('validationApp').factory
  

2.错误:$ injector:unpr未知提供者未知提供者:loginServiceProvider< - loginService< - loginController

由于您在loginService.js

中犯了错误而导致此错误

答案 3 :(得分:0)

您应该替换validation.factory而不是app.factory