我正在为项目使用角度js,我有一个登录页面,从成功登录后,用户被重定向到主页。截至目前,我正在使用此代码重定向
request.success(function(data){
$scope.response=data;
NProgress.done();
window.location.href = "/app/home.html";
//$location.path('/homepage').replace();
});
但是这种方法的问题是浏览器中的网址显示 /app/home.html#/feed ,这看起来不太好。我希望这通过angularprovider以角度来实现,但它不起作用。 我当前的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'});
我希望broswer中的网址看起来像 app / homepage / feed 使用$ location,因为我在评论中尝试过。知道我怎么能这样做吗?
答案 0 :(得分:0)
功能$locationProvider.html5Mode(boolean)
是您所需要的
只需执行$locationProvider.html5Mode(true)
,您就不应再看到任何#
。
它位于文档的this page
答案 1 :(得分:0)
如果您不使用服务器端语言/路由,则只使用angularJs。然后简单地添加它以从角度完全删除#tag。
angular.module('myApp', ['ngRoute'])
.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
但是如果你使用服务器端语言,那么你将不得不创建一个全能路由,以便任何未在服务器端专门路由的路由将传递给angular routes。我在这里使用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');
});
详情请使用this链接