我的應用做的是,一旦用戶登錄,用戶信息就會被導出,以便路由器使用它來更新配置文件模板。但是,我希望我的應用要做的是,在用戶仍然登錄的情況下,如果他/她進入主頁,我不希望用登錄和註冊鏈接呈現導航欄,而是希望使用與簡介頁面相同的註銷和用戶名鏈接呈現導航欄。如何在Jade中分配一個變量?
所以我的錯誤是當用戶請求主頁時,路由器將一個名爲isSignedIn的變量與模板名稱一起傳遞。我想把變量的值(isSignedIn)存儲在jade文件中的另一個變量中,這樣如果用戶是signed,那麼它會爲主頁呈現不同的導航欄。
玉石無法執行這樣的: -var isSignedin =#{} isSignedIn
我的一些代碼如下所示:
//app.js
app.post('/signup',
passport.authenticate('signup_local_strategy',
{successRedirect:'/profile',
failureRedirect:'/signup_error'
}));
passport.use('signup_local_strategy',new localStrategy(
{passReqToCallback: true},
function(req, username, password, done)
{
user_model.findOne({username:username},function(err, user){
if(err)
{
return done(err);
}
if(user == null)
{
var new_user = new user_model({
username: username,
password: password,
university: req.body.university,
hometown: req.body.hometown
});
new_user.save(function(err){
if(err)
{
throw err;
}
});
user = new_user; //Assigned the variable new_user to user to authematically serialize the new user.
return(done(null, user));
}
if(user.username == username)
{
return(done(null, false));
}
});
}
));
app.get('/profile', routes.userProfileResponseHandler);
app.get('/', routes.indexResponseHandler);
//serialize user and export the the user information so that the router update the view
passport.serializeUser(function(user, done){
done(null, user.id);
exports.isSignedIn = true;
exports._id = user.id;
exports.username = user.username;
exports.university = user.university;
exports.hometown = user.hometown;
});
routes.js
exports.indexResponseHandler = function (req, res){
res.render('index', {title: "College Clubs MN", isSignedIn: app.isSignedIn});
}
//index.jade
- var iSignedin = #{isSignedIn} // It could not assign #{isSignedIn} in the variable.
ul(class="nav navbar-nav navbar-right")
if(isSignedIn=='true')
li
a(href="/signout") Signout
li
a(href="/profile") #{username}
else
li
a(href="/signin") Sign in
li
a(href="/signup") Sign up
謝謝提前:)!
報錯作爲一個屬性爲['res.render()'](http://expressjs.com/4x/api.html:
雖然多餘的,因爲行是語法上有效#res.render),'isSignedIn'已經是模板中的一個「本地」變量。 var不是真的需要。 – 2014-11-23 05:35:17
好吧,我想將#{isSignedIn}的值賦給聲明爲isSignedIn的變量。否則,它會是這樣的>> if(#{isSignedIn} =='true'){//一些代碼}仍然會導致渲染錯誤。 – user3775940 2014-11-23 05:53:27
'isSignedIn'已經是模板中的局部變量。它不需要用'#{...}輸出來與Jade共享,只需訪問它。 '如果isSignedIn' – 2014-11-23 05:59:05