如何从状态URL的路由中删除感叹号意味着完整的堆栈

时间:2016-12-09 05:57:09

标签: javascript angularjs node.js express mean-stack

我想从网址状态路由中移除感叹号,就像我的网址现在是http://localhost:3000/#!/auth/register

我只是想删除这个"!"来自"#"

之后的网址标记

有可能吗?与mean.io

这是我的app.js / system.js

'use strict';

//Setting up route



  angular.module('mean').config(['$stateProvider', '$urlRouterProvider',
  function($stateProvider, $urlRouterProvider) {
    // For unmatched routes:
    //$urlRouterProvider.otherwise('/');


    var checkLoggedin = function($q, $timeout, $http, $location) {
      // Initialize a new promise
      var deferred = $q.defer();

      // Make an AJAX call to check if the user is logged in
      $http.get('/loggedin').success(function(user) {
        // Authenticated

        if (user !== '0') $timeout(deferred.resolve);

        // Not Authenticated
        else {
          $timeout(deferred.reject);
          $location.url('/auth/login');
        }
      });

      return deferred.promise;
    };


    //  console.log($stateProvider);
    // states for my app
    $stateProvider
      .state('tasks', {
        url: '/kanban/:projectId/:projectSlug',
        templateUrl: 'system/views/index.html',
          controller: 'IndexController',
          resolve: {
          loggedin: checkLoggedin,
          onEnter: function($stateParams,$state, $uibModal) {

              if ( $stateParams.projectId != "" ) {

                  updateTopMenu('Kanban','task','#!/kanban/'+$stateParams.projectId+'/'+$stateParams.projectSlug);
                  updateTopMenu('Schedule','schedule','#!/schedule');
              }
          }
        }

        }).state('home',{

            url:'/',
            templateUrl: 'projects/views/index.html',
            controller: 'ProjectController',
            resolve:{
                        loggedin: checkLoggedin
            }
        }).state('taskEdit',{

            url:'/kanban/:projectId/:projectSlug/:taskSlug',
            templateUrl: 'system/views/index.html',
            controller: 'IndexController',
            resolve:{
                        loggedin: checkLoggedin
            }

        }).state('taskAdd',{

          url: "/task/taskAdd",
          onEnter: function($stateParams, $state, $uibModal) {
              $uibModal.open({
                  templateUrl: "system/views/include/model.html",
                  resolve: {},
                  controller: function($scope, $state, itemService) {
                                /*
                                $scope.state = $state.current;
                                $scope.params = $stateParams;
                                $scope.item = itemService.get($stateParams.id);
                                */
                                $scope.ok = function () {
                                    $scope.$close('clicked ok');
                                };

                                $scope.dismiss = function () {
                                    $scope.$dismiss('clicked cancel');
                                };
                            }
                    }).result.then(function (result) {
                        // $scope.$close
                        alert('result ->' + result);
                    }, function (result) {
                        // $scope.$dismiss
                        return $state.transitionTo("home");
                        alert('dismiss ->' + result);
                    }).finally(function () {
                        // handle finally
                        return $state.transitionTo("tasks");
                    });
                }
          });
  }
]).config(['$locationProvider',
  function($locationProvider) {
    $locationProvider.hashPrefix('!');
  }
]);

2 个答案:

答案 0 :(得分:2)

您已在此配置

function($locationProvider) {
   $locationProvider.hashPrefix('!');
}

删除此行以从网址中删除!

或使用以下代码启用html5mode以从网址中删除#

$locationProvider.html5Mode(true);

但请在启用html5mode

之前阅读有关如何在角度,服务器端路由与客户端路由等处理URL路由的更多信息

答案 1 :(得分:1)

$locationProvider.hashPrefix('!');更改为$locationProvider.hashPrefix('');

<强> System.js

.config(['$locationProvider',
  function($locationProvider) {
    $locationProvider.hashPrefix('');
  }
]);