在保持漂亮的URL的同时将param传递给MEAN应用程序的最佳方法是什么? 我不能在客户端上使用存储器。以下Express路由将成功引导Angular应用程序中的param,但URL很难看......
globeobject.saveInBackground();
参数化网址:
router.get('/:bid', function(req, res, next) {
var bid = req.params.bid || '';
res.render('index', { initData: { bid: bid } });
});
变为:
http://localhost:4001/ABC123
我不介意使用查询字符串,但我希望查询字符串params立即消失。
答案 0 :(得分:1)
(相当肯定的是,从你的其他帖子中,你正在使用UI-Router。我将在这里假设这一点。)
如果您正在使用UI-Router,我会使用值作为参数格式化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>
当用户点击链接或在其他地方导航时,参数将从网址中消失。
另外,在旁注中,这也会消除对Jade的依赖或通过视图引擎注入它。