Как включить ejs partials в JavaScript? - PullRequest
3 голосов
/ 29 сентября 2019

Я пишу некоторый код, который проверяет, вошел ли пользователь в систему. И если пользователь вошел в систему, раздел «мой пользователь» должен отличаться от того, когда этот пользователь не вошел в систему.

Итаккогда вошедший в систему пользователь переходит на страницу «мой пользователь», оператор if проверяет, вошел ли пользователь в систему или нет, и если пользователь вошел в систему, он должен включать в себя часть, соответствующую состоянию вошедшего в систему. Если пользователь не вошел в систему, в операторе if должен быть указан другой частичный элемент.

Как включить частичные элементы в элемент div, используя JS?

Я попытался использовать parentElement.innerHTML = "<%= include userNotLoggedIn.ejs %> без удачии я также попытался вручную отредактировать html-файл, пока он работает в браузере, с помощью инструмента проверки, но он не извлекает шаблон.

Кажется, что я не могу включить партиалы после рендеринга основного html-файла. Это тот случай?

Вот мой код:

 if(document.getElementById("loginState").innerHTML == " Logg inn") {        
                //Append the correct html template if the user is not logged in
            var includeStr = "<%= include notLoggedIn.ejs %>";
                cont.innerHTML = includeStr;
        } else {
                //Append the desired html template if the user is logged in
            var includeStr = "<%= include userLoggedInMenu.ejs %>";
                cont.innerHTML = includeStr;
        }

, где cont - контейнер, в котором шаблон должен быть добавлен в

Я ожидаю, что частичное будет добавлено вэлемент контейнера, и этот мой notLoggedIn.ejs файл отображается на HTML-странице. Это не результат, однако.

Пожалуйста, ознакомьтесь с изображением ниже: (Я не могу публиковать изображения непосредственно в сообщении)

https://imgur.com/a/ISDFIPp

1 Ответ

0 голосов
/ 30 сентября 2019

ejs отображается на стороне сервера и возвращается клиенту в виде HTML. Я не думаю, что вы можете добавить ejs на стороне клиента.

Один из возможных способов добиться того, что вы пытаетесь - это установить переменную с именем currentUser и передать ее в файл ejs ив файле вы должны установить условие, как показано ниже для условного отображения содержимого.

// Making the logged in user available
app.use(function (req, res, next) {
    res.locals.currentUser = req.user;
    next();
});
<% if(!currentUser) { %>
// If the user is not logged in
<% } else { %>
// If the user is logged in
<% } %>
...