#javascript #node.js #ejs #server-side-rendering #templating-engine
#язык JavaScript #node.js #ejs #рендеринг на стороне сервера #шаблонизатор-движок
Вопрос:
Я пытаюсь реализовать этот код, но он работает не так, как ожидалось. Проблема объясняется ниже.
lt;% if (Object.keys(notes).length !== 0) { %gt; lt;p class="card-text w-100" id="bookShelf"gt; lt;div class="inline-block"gt; lt;% notes.forEach(note =gt; { %gt; lt;div class="card ml-2" style="width: 18rem;"gt; lt;div class="card-body"gt; lt;h5 class="card-title"gt;lt;%= note.title %gt; lt;/h5gt; lt;p class="card-text"gt;lt;%= note.body %gt; lt;/pgt; lt;/divgt; lt;/divgt; lt;% }); %gt; lt;/divgt; lt;/pgt; lt;% } else { %gt; lt;p class="card-text w-100" id="bookShelf" aria-placeholder="Add some notes..."gt; You have not added any notes lt;/pgt; lt;% } %gt;
В приведенном выше коде объект «примечания» обслуживается из серверной части и не является пустым. При рендеринге этого кода ejs я получаю вывод таким образом, что последний элемент абзаца «текст карты» по-прежнему подается на внешний интерфейс без элемента. И первый элемент абзаца «текст карточки» отображается отдельно вместо того, чтобы заключать элемент div, содержащий примечания. В идеальном случае ожидается, что он будет отображать один из элементов абзаца, но не оба.
Пожалуйста, обратитесь к прилагаемым скриншотам для лучшего понимания проблемы. Я уже потратил на это слишком много времени и все еще не мог разобраться в проблеме, если только это не ошибка какого-то типа. Любое предложение или помощь, даже самая незначительная, будут оценены по достоинству.
ПРАВКА: Пожалуйста, обратите внимание, что это работает должным образом, когда объект «примечания» пуст, т. е. отображается только последний элемент абзаца.
Комментарии:
1. Является
notes
ли массивом?2. Да. Это массив объектов JSON
3. вы уверены, что просматриваете этот фрагмент кода только один раз ? потому что кажется, что он находится внутри другого цикла, а в «заметках» не может быть ключей или некоторых ключей