簡體   English   中英

使用 AngularJS 重定向到新頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM