2015-07-01 49 views
1

在保持一個漂亮的URL的同時將一個參數傳遞給MEAN應用程序的最佳方式是什麼? 我不能在客戶端使用此存儲。以下快遞航線將成功地引導帕拉姆在角應用程序,但該網址是醜陋...將param傳遞到帶有漂亮URL的MEAN應用程序中?

router.get('/:bid', function(req, res, next) { 
    var bid = req.params.bid || ''; 
    res.render('index', { initData: { bid: bid } }); 
}); 

參數化URL:

http://localhost:4001/ABC123 

變爲:

http://localhost:4001/?bid=abc123#/login 

我不介意使用查詢字符串,但我希望查詢字符串參數立即消失。

回答

1

(相當肯定的,從你的其他職位,您正在使用的用戶界面,路由器,我要在這裏進行假設。)

如果你使用的UI,路由器,我會用格式化的URL值作爲參數:

http://localhost:4001/#/login/abc123 

只要你的國家佔參數...

(function (module) { 

    'use strict'; 

    var config = function ($stateProvider, $urlRouterProvider) { 

     $urlRouterProvider.otherwise("/login"); 

     $stateProvider 
      .state('login', { 
       url: '/login/:bid', 
       templateUrl: 'partials/login.html', 
       params: { 
        bid: { squash: true, value: null } 
       } 
      }); 
    }; 

    module.config(config); 

})(angular.module('your-app')); 

然後,您可以拉入值使用$ stateParams控制器:

(function (module) { 

    'use strict'; 

    var loginController = function ($stateParams) { 

     var vm = this; 

     vm.bid = $stateParams.bid || ''; 

    }; 

    module.controller('Login', loginController); 

})(angular.module('your-app')); 

而且用它做什麼,你會怎樣:

<div class="container" ng-controller="Login as login"> 
    <form class="form-signin"> 
     <h2 class="form-signin-heading">Please sign in: {{ login.bid }}</h2> 
    </form> 
</div> 

參數將從URL用戶點擊一個鏈接或其他地方導航瞬間消失。另外,在附註中,這也將消除對Jade的依賴或通過視圖引擎注入它。