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