我想创建一个简单的登录,所以我刚创建了一个包含用户名和密码的html页面。我创建了一个控制器并调用了一个名为login的函数,在里面我调用了一个返回工厂数据的工厂,我会根据这些数据创建登录。
控制器
myApp.controller('login', ['$scope','$rootScope', '$location', '$window', 'authenticate', '$http', '$cookieStore',function($scope, $rootScope, $location, $window, authenticate, $http, $cookieStore) {
$scope.alert = '';
$scope.login = function(){
authenticate.login($scope.login.username, $scope.login.password).then(function(response){
alert("Inside controller"+JSON.stringify(response));
});
}
}]);
我的工厂
myApp.factory('authenticate',['$http', '$filter', '$cookieStore', '$rootScope', '$window', '$q',
function($http, $filter, $cookieStore, $rootScope, $window, $q) {
var data = "";
var deferred = $q.defer();
return {
login: function(userName,password){
$http.post('user/serverside/authentication.php',{username: userName, password: password})
.then(function(response){
deferred.resolve(response.data);
alert("FACTORY"+JSON.stringify(response));
});
return deferred.promise;
}
}
}]);
我在登录时调用控制器内的登录功能, 问题是我登录时
质疑
答案 0 :(得分:2)
我认为它的错误因为你应该在每个功能中产生承诺,而不是在主工厂中产生承诺:
myApp.factory('authenticate',['$http', '$filter', '$cookieStore', '$rootScope', '$window', '$q',
function($http, $filter, $cookieStore, $rootScope, $window, $q) {
var data = "";
return {
login: function(userName,password){
var deferred = $q.defer();
$http.post('user/serverside/authentication.php',{username: userName, password: password})
.then(function(response){
deferred.resolve(response.data);
alert("FACTORY"+JSON.stringify(response));
});
return deferred.promise;
}
}
}]);
Ur代码不起作用,因为承诺首次执行生成的代码,如果代码已经检查,则承诺其解析会自动执行然后阻止。
2.-您可以使用ssl来登录您的登录,但该功能登录类似。重要的是它在服务器端的实现。