#node.js #express #ejs
#node.js #экспресс #ejs
Вопрос:
У меня есть представление, которое:
/views/signup.html
Я хочу, чтобы на странице в моем основном шаблоне макета были разные элементы в зависимости от того, какой вид загружается.
В моем основном файле макета, когда отображается этот конкретный вид, я хочу сделать что-то вроде:
<% if (ecomHeader) { %>
<% include includes/signup-nav.html %>
<% } %>
<% else { %>
<% include includes/nav.html %>
<% } %>
Это, очевидно, не работает
ReferenceError: ../views/layout.html:9
7| </head>
8| <body>
>> 9| <% if (ecomHeader) { %>
10| <% include includes/signup-nav.html %>
11| <% } else { %>
12| <% include includes/nav.html %>
Вы можете это сделать? это так работает?
визуализируйте код:
...
let token = createCSRFToken(req);
let ecomHeader = true;
res.render('premium/signup', {
message: req.flash('signupMessage'),
token: token,
ecomHeader: true
});
...
Есть экспорт. вещь, которая обертывает это, не уверен, актуально это или нет
Комментарии:
1.
res.render('signup', { signup: true })
илиsignup: false
в зависимости от того, кто рендерит?2. не могли бы вы опубликовать свой код рендеринга?
3. Я просто надеялся, что это поможет
4. вы
premium/signup
не визуализируетеlayout.html
, поэтому вы не можете передавать переменныеlayout.html
? может быть, измените структуру регистрации, чтобы включить частичные элементы?
Ответ №1:
В вашем другом условии отсутствуют определенные вещи. Убедитесь, что вы передаете логическое значение signup: true / false из серверной части в свои представления.
res.render("main-template", {
signup: true/false
});
Затем в вашем html вам нужно сделать это — убедитесь, что вы используете <%-
.
<% if(signup){ %>
<%- include('includes/signup-nav.html'); %>
<% } else { %>
<%- include('includes/nav.html'); %>
<% } %>
Комментарии:
1. Хорошо, я это делаю, но он говорит мне
signup is undefined
, должен ли я объявлять его как переменную где-то еще?2. Вы не отображаете views/layout.html . Вы предоставляете премиум / регистрацию. И
{ message: req.flash('signupMessage'), token: token, signup: true/false, ecomHeader: true }
— Регистрация должна быть передана здесь.3. если вы найдете мое решение полезным, пожалуйста, примите и поддержите 🙂 Спасибо!