如何在meanjs app中删除Url中的哈希值

时间:2017-02-21 07:00:20

标签: angularjs node.js meanjs

我需要从网址中删除“#”。可以通过设置

来完成
  

$ locationProvider.html5Mode({enabled:true,requireBase:false});

但是当我这样做时,我的路线将转向Nodejs路线。 例如: http://example.com/#/login - 它将打开登录页面,但在删除hashbangs后,其命中nodejs路由 - http://example.com/login

应用程序已完成,所以我现在无法更改实现。

请帮忙。

编辑: 这些是少数stateProvider

$urlRouterProvider.otherwise('/');
    $stateProvider.state('index', {
        url: '/',
        templateUrl: 'partials/landing.html',
        controller: 'mainController',
        controllerAs: 'main',
        resolve: {
            deps: ['$ocLazyLoad', function($ocLazyLoad) {
                return $ocLazyLoad.load({
                    name: 'mainCtrl',
                    files: [
                        'plugins/raty/jquery.raty.js',
                        'js/controllers/HomeController.js'
                    ]
                });
            }]
        }
    })


    .state('home', {
            url: '/home',
            templateUrl: 'partials/home.html',
            controller: 'landingController',
            resolve: {
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        name: 'mainCtrl',
                        files: [
                            'js/controllers/HomeController.js'
                        ]
                    });
                }]
            }
        })

1 个答案:

答案 0 :(得分:0)

在配置块中添加以下行

$locationProvider.html5Mode(true).hashPrefix('!'); 

在index.html文件集基础中,在html页面的head标签中添加以下行

<base href="/" > 

然后在节点server.js中通过添加以下代码来处理您的路由

app.get('*', function(req, res) {
    res.sendFile("index.html",{root:__dirname+'/public'}); 
   //load the single view file (angular will handle the page changes on the front-end)
});