7 html javascript node.js express
我的layout.hbs中有一个导航栏:
<div class="collapse navbar-collapse" id="collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href={{sign}}>{{issign}}</a></li>
<li><a href={{los}}>{{islog}}</a></li>
<li><a href="/">Home</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在旅途中更改内容,例如当用户登录时,我想将登录文本更改为注销并重定向到其他页面.我通过路线这样做.
router.get('/', function(req, res, next) {
var vm = {
title: 'Join Fatty-cruxifinier',
sign: 'about',
issign : 'SIGNUP',
islog: 'LOGIN',
los: 'login'
};
res.render('signup', vm);
});
router.post('/', function(req, res, next) {
userServices.addUser(req.body, function(err){
if(err){
var vm = {
title: 'Create an account',
input: req.body,
error: err
};
delete vm.input.password;
return res.render('signup', vm);
}
res.redirect('/');
});
});
Run Code Online (Sandbox Code Playgroud)
虽然这似乎工作,我需要的添加islog,issign,los和sign变量每一个网页,我有.
有一个更好的方法吗?
小智 0
您可以拥有一个捕获所有路由器,并在每次响应之前运行登录逻辑。
var _ = require('lodash');
var parameters = {};
function isLoggedin(req, res, next) {
// check is the user is logged in
res.user = {
// userdata
};
next();
}
// catch all the get routes
app.get(/^(.*)$/, isLoggedin, function(req, res, next){
if (res.user) {
var _parameters = {
title: 'Join Fatty-cruxifinier',
sign: 'about',
issign : 'SIGNUP',
islog: 'LOGIN',
los: 'login'
};
} else {
var _parameters = {
title: 'Join Fatty-cruxifinier',
sign: 'about',
issign : 'SIGNUP',
islog: 'LOGIN',
los: 'login'
};
}
parameters = _.extend(parameters, _parameters);
next();
});
app.get('/account', function(req, res, next){
res.render('signup', parameters);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |