2014-09-01 57 views
1

我正在使用角度js作为项目,我有一个登录页面,从成功登录后用户被重定向到主页。截至目前我使用此代码来重定向angularjs中的重定向

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'}); 

我想在broswer的URL看起来像应用程序/主页/饲料使用$位置,因为我在评论中都试过了。任何想法如何我可以做到这一点?

回答

0

功能$locationProvider.html5Mode(boolean)是你需要的。
只要做$locationProvider.html5Mode(true),你不应该再看到任何#了。

,如果你不使用服务器端语言/路由,只有你正在使用angularJs是对文档的this page

+0

我的问题不是**# **我不希望文件扩展名.html在浏览器中可见,目前我正在使用$ locationProvider.html5Mode(布尔值),但保留它为假,因为我首先要从url中删除.html。 – Gaurav 2014-09-01 17:56:13

+0

一个文件扩展名与路由有关?如果你尝试我的建议,会发生什么? @Gaurav – 11684 2014-09-01 17:57:14

0

。然后简单地添加这个来彻底从角度删除#标签。

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

但是,如果你正在使用服务器端语言,那么你必须创建一个包罗万象的路线,使得没有专门针对服务器端路由的任何途径将被传递到角routes.i我在这里使用将服务器表示为后端以捕获后端未提及的路由。我假设你正在使用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链接

+0

我们正在使用sails.js作为后端,但我仍然有这个想法 – Gaurav 2014-09-01 18:54:23