美好的一天!我試圖檢查每個頁面上的user_id cookie,如果沒有cookie,重定向到登錄頁面。但是出現了錯誤,並且由於遞歸而導致應用程序崩潰。 爲什麼這段代碼不起作用? 在app.js我承諾條件路由不起作用
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {templateUrl: 'partials/login.html', controller: 'loginCtrl'});
$routeProvider.when('/signup', {templateUrl: 'partials/signup.html', controller: 'signupCtrl', resolve: {factory: checkRouting}});
$routeProvider.when('/index', {templateUrl: 'index.html', controller: 'MainCtrl', resolve: {factory: checkRouting}});
$routeProvider.otherwise({redirectTo: '/'});
}]);
var checkRouting = function ($q, $rootScope, $http, $location, localStorageService) {
function redirect(path) {
if ($location.path() != path) {
$location.path(path);
return $q.reject();
} else {
return true;
}
}
return getUserDataPromise($q, $rootScope, $http, localStorageService)
.then(function (result) {
return redirect("/index");
}, function (reason) {
console.error(reason);
return redirect("/");
});
};
var getUserDataPromise = function ($q, $rootScope, $http, localStorageService) {
if ($rootScope.session_id) {
return $q.when($rootScope.session_id);
} else {
var session_id = localStorageService.cookie.get("session_id");
if (!session_id) {
return $q.reject("No session id.");
} else {
$rootScope.session_id = session_id;
return $q.when(session_id);
// return $q.reject("Error requesting server: " + reason);
}
}
controllers.js是
angular.module('myApp.controllers', [])
.controller('MainCtrl', ['$scope', '$http', '$window', '$route', '$location', '$routeParams', function($scope, $http, $window, $route, $location, $routeParams) {
console.log("fffffffff");
}])
.controller('loginCtrl', ['$rootScope', '$scope', '$http', '$window', '$route', '$location', '$routeParams', 'localStorageService', function($rootScope, $scope, $http, $window, $route, $location, $routeParams, localStorageService) {
$scope.username = "";
$scope.password = "";
$scope.auth = false;
$rootScope.session_id="";
var sess="mlvdfmvlkcmlkvnxclkjmnvkl561vfd" //for debug
$scope.submit = function() {
$scope.secret = "M"
var responsePromise = $http.post("ajax", { method: "login", login: $scope.username, password: $scope.password, secret: $scope.secret });
responsePromise.success(function(data, status, headers, config) {
if (data.status == "done") {
$scope.auth = true;
console.log(data.status);
localStorageService.cookie.set("session_id", sess);
$location.path("/index");
};
});
responsePromise.error(function(data, status, headers, config) {
alert("AJAX failed!");
});
};
}])
我不確定你可以在這裏發佈你的網站的一半,並問爲什麼它不工作。請你可以製作一個jsFiddle或其他東西? – meriadec 2014-09-23 18:32:53