【问题标题】:jade if behaving inconsistent玉若举止不顺
【发布时间】:2013-03-29 19:02:16
【问题描述】:

我正在使用 expressjs,我的应用中有以下内容:

app.get('/profile',index.profile);
app.get('/',index.home);

在 layout.jade 中

...
if typeof(username)!=='undefined'
                    li: a(href='/logout') Log Out
                else
                    li: a(href='/register') Register
...

我的路由代码如下:

 exports.home = function(req,res){
if (typeof req.session.username == 'undefined')
    res.render('login',{title:'PageTitle'});
else
    res.redirect('/profile');
 };

exports.profile = function(req,res){
var show_devices = function(username,dev){
    res.render('home',{title:'Pagetutle', username: username,some other data..});
}
if (typeof req.session.username == 'undefined')
    res.redirect('/');
  ...

这是我的注销

 exports.logout = function(req,res){
req.session.destroy();
res.redirect('/');
 };

我第一次启动我的服务器时,我得到了列表Register,当我登录时,我得到了Log Out,但是当我注销时,我也得到了Log Out。好像username 会在那里幸存下来。如何从玉命名空间中删除 username 变量 - 我认为这是我的问题。

【问题讨论】:

    标签: css express pug


    【解决方案1】:

    我找到了解决方案,但我觉得很难看。

    我这样修改exports.home

    exports.home = function(req,res){
    if (typeof req.session.username == 'undefined')
        res.render('login',{title:'Smart Fridge',username:undefined});
    else
        res.redirect('/profile');
    };
    

    并且jade检查的时候发现用户名的类型是未定义的。有更好的解决方案吗?我需要检查类型是否未定义,因为 layout.jade 也是从其他页面呈现的,所以我发现每次呈现页面时传递一些变量只是为了定义菜单的哪些元素应该显示和不是。

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多