如何删除'#'在$ location.path中?

时间:2016-05-23 13:29:51

标签: angularjs express

我有一个登录页面,当凭据正确时,我想要的是将我重定向到localhost:2000/home

但是,当我在登录时尝试将自己重定向到/home时,它会重定向到:localhost:2000/#/home

注意:我已尝试将locationProvider.html5Mode设置为true

这是我到目前为止所做的事情:

这是我控制器的代码:

$scope.submitLoginForm = function(isValid) {
        $scope.submitted = true;
        if (isValid) {
            //placeholder

            $scope.err = '';
            alert('Your form has been processed!');
            var data = {
              'email': $scope.email,
              'password': $scope.password
            }

            loginService.loginCredentials(data);

这是我的登录服务代码:

function loginCredentials(data, callback) {
    $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";

    $http.post("http://" + constants.local_api_host + ':'+ constants.local_api_port + '/' + constants.user_prefix + '/login', $.param(data))
    .then(function(response){

      if (response.data.error){
        console.log(response.data.message);
        var return_info = {
          error: response.data.error,
          message: response.data.message
        }
        return return_info
      }
      console.log("Success");
      $location.path('home');
    })

这是我的角度路线:

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
    $routeProvider
      .when('/', {
        templateUrl: 'index.html',
        controller: mainController
      })
      .when('/home', {
        templateUrl: 'home.html',
        controller: mainController
      });

    $locationProvider.html5Mode(true); 
  });
]);

我还将index.htmlhome.html配置为base href='/'。 而它仍然无法正常工作。

至于我在快递中的代码,这里是我为路线配置的代码:

app.get('/', function (req, res) {
    res.sendFile( __dirname + '/'+ 'index.html');
});

app.get('/home', function (req, res) {
    res.sendFile( __dirname + '/partials/'+ 'home.html');
});

我该怎么做才能解决这个问题?谢谢。 :)

1 个答案:

答案 0 :(得分:0)

您可以将html5mode设置为true以删除'#'。

 angular.module('myApp', []).
   config(['$locationProvider', function($routeProvider, $locationProvider){

             $locationProvider.html5Mode(true);
  }]);

您需要添加

$locationProvider.html5Mode(true); 

并且还使用$ state.go()而不是$ location.path();

$state.go('home');