簡體   English   中英

angularjs中的重定向

[英]Redirection in angularjs

我在一個項目中使用angular js,我有一個登錄頁面,成功登錄后,用戶將從該頁面重定向到首頁。 截至目前,我正在使用此代碼重定向

request.success(function(data){
              $scope.response=data;
              NProgress.done();
              window.location.href = "/app/home.html";
             //$location.path('/homepage').replace();
        });

但是這種方法的問題在於瀏覽器中的url顯示/app/home.html#/feed看起來不太好。 我希望這可以通過routeprovider以角度實現,但它不起作用。 我當前的app.js文件如下所示

config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.when('/feed', {templateUrl: 'partials/home/feed.html'});
$routeProvider.when('/profile', {templateUrl: 'partials/home/profile2.html'});
//  $routeProvider.when('/homepage', {templateUrl: '#/home.html'});
$routeProvider.otherwise({redirectTo: '/feed'});

我希望瀏覽器中的網址看起來像使用$ location的app / homepage / feed一樣,正如我在評論中嘗試過的。 任何想法我怎么可能做到這一點?

您需要的是$locationProvider.html5Mode(boolean)函數。
只需執行$locationProvider.html5Mode(true) ,就不會再看到任何#了。

在文檔的此頁

如果不使用服務器端語言/路由,則僅使用angularJs。 然后只需添加它即可完全從角度刪除#標簽。

angular.module('myApp', ['ngRoute'])
    .config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(true);
}]);

但是,如果使用服務器端語言,則必須創建一個包羅萬象的路由,以便所有未在服務器端專門路由的路由都將傳遞給角度路由。我在這里使用Express Server作為后端來捕獲后端未提及的路由。 我假設您正在使用express.js:

app.get('*', function(req, res) {
res.render('index');
});

總體而言,您的服務器代碼如下所示:

var express = require('express'),
app = module.exports = express();
app.engine('.html', require('ejs').__express);
app.set('views', __dirname + "/views");
app.set('view engine', 'html');
app.use(express.static(__dirname + "/public"));
app.get('*', function(req, res) {
res.render('index');
});

有關詳細信息,請使用鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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