[英]Redirect to a new page with AngularJS
我正在嘗試使用帶有登錄系統的 MEAN 開發網頁。 我首先開發前端。 服務器正在啟動並且 index.html 正在正確加載,但我在成功登錄后無法重定向到另一個頁面。 我試過 $state.go 但我需要完全加載一個新頁面,我試過 $window.location.href 但它不起作用而且我的 URL 一團糟。
我的 index.html base 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);
});
成功登錄后,我想轉到我的主頁。 這樣做的最佳方法是什么? 拜托,我什么都試過了。
為了重定向正確的用法是
$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 替換為 $state,然后在需要重定向時執行此操作。 作為 $location,不會重新加載整個頁面。
$state.go('home');
注意:如果您仍然希望使用 $window,請將其包裝在超時中。
$timeout(function() {
$window.location.href= link;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.