#javascript #node.js #express #view
#javascript #node.js #выразить #Вид
Вопрос:
У меня есть следующий код в одном из моих контроллеров:
module.exports.main = function (req, res) {
if (req.isAuthenticated()) {
res.render('dashboard', {
title: 'Welcome to ENIGMA VI',
data: {
firstLogin: req.user.firstLogin,
name: req.user.name,
isAdmin: req.user.isAdmin
}
});
} else {
res.redirect('/?err=' encodeURIComponent('Please login first.'));
}
};
Представление dashboard.jade
расширяет другое вызываемое родительское представление layout.jade
, и я использую данные, переданные dashboard.jade
в этом представлении. Проблема в том, что это работает, однако я получаю следующую ошибку:
TypeError: C:UsersRafayDropboxDevelopmentEnigmaapp_serverviewslayout.jade:34
32| #navbar-main.navbar-collapse.collapse
33| ul.nav.navbar-nav.navbar-right
> 34| - if(!data.firstLogin)
35| renderApplicationMenu()
36| li.active
37| a(href='/')
Cannot read property 'firstLogin' of undefined
Мой вопрос заключается в следующем: почему я могу получить доступ к data
in layout.jade
, хотя он выдает ошибку. Во-вторых, есть ли лучший способ передавать переменные в представлениях?
Комментарии:
1. Что вы имеете в виду, говоря, что можете получить доступ к данным, даже если произошла ошибка? Вы имеете в виду, что вы можете видеть ожидаемый вид?
2. @Svabael Я обращаюсь к
data.firstLogin
вlayout.jade
, чтобы задать отображение элемента в меню или нет в зависимости от значения. Я могу получить доступ к этой переменной, и меню отображается правильно, однако ошибка по-прежнему выдается.