我正在尝试使用MEAN开发一个带登录系统的网页。我正在开发前端。服务器正在启动并且index.html正在正确加载,但是在成功登录后我遇到了重定向到另一个页面的问题。我尝试使用$ state.go,但是我需要完全加载一个新页面,我尝试过使用$ window.location.href,但是它没有用,而且我的URL很乱。
我的index.html基础href是“/”
我的登录控制器:
var app = angular.module('SantaUTIApp', []);
app.controller('loginCtrl', function($scope, $window, $timeout) {
$scope.showGreeting = false;
var link = "https://" + $window.location.host + "/home";
$scope.showInvalidUserPasswordMessage = function() {
$scope.msg="Usuario e/ou Senha inválidos.";
$scope.showGreeting = true;
$timeout(function(){
$scope.showGreeting = false;
}, 10000);
};
$scope.login = function(){
if($scope.user === '1' && $scope.password === '2')
$window.location=link;
else
$scope.showInvalidUserPasswordMessage();
};
});
我的角度路线档案:
var app = angular.module('SantaUTIApp', ['ui.router']);
app.config(function($stateProvider, $locationProvider, $urlRouterProvider){
$stateProvider
.state('login',{
url:'/',
templateUrl: 'views/index.html',
controller: 'loginCtrl',
})
.state('home',{
url: '/home',
controller: 'homeCtrl',
templateUrl: 'views/home/home.html'
});
$locationProvider.html5Mode(true);
});
成功登录后,我想转到我的主页。这是最好的方法吗?拜托,我已经尝试了一切。
答案 0 :(得分:1)
为了重定向正确的用法是
$window.location.href=link;
以下是更多选择:
1。如果您在服务中保存了登录状态并且不想重新加载所有SPA,请使用$ location,因为它不会导致浏览器URL重新加载整页改变了。要在更改URL后重新加载页面,请使用较低级别的API $ window.location.href。
var app = angular.module('SantaUTIApp', []);
app.controller('loginCtrl', function($scope, $location, $timeout) {
$scope.showGreeting = false;
var link = $location.protocol() + $location.host() + '/home';
$scope.showInvalidUserPasswordMessage = function() {
$scope.msg="Usuario e/ou Senha inválidos.";
$scope.showGreeting = true;
$timeout(function(){
$scope.showGreeting = false;
}, 10000);
};
$scope.login = function(){
if($scope.user === '1' && $scope.password === '2')
$location.path(link);
else
$scope.showInvalidUserPasswordMessage();
};
});
2. 此外,您还可以使用$状态的Angular路由。
在控制器中用$ state替换$ window,然后在需要重定向时,执行此操作。作为$ location,不会进行整页重新加载。
$state.go('home');
注意:强> 如果您仍在使用$ window,请将其包装在超时时间内。
$timeout(function() {
$window.location.href= link;
});