我有一个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的新人,请帮我解决这个问题。
答案 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