Использование цикла for с литеральной функцией шаблона JavaScript
У меня есть веб-приложение, фронтенд использует обычный HTML5, бэкенд использует Django.
На странице фронтенда у меня есть функция JavaScript template literal. Которая должна выводить все индивидуальные значения в поле выбора набора запросов, переданных из бэкенда в таблицу bootstrap.
view.py:
def view_material(request):
query_results_publisher = Publisher.objects.all()
return render(request, 'material/index.html', context={'Publisher':query_results_publisher})
index.html (таблица bootstrap + буквальная функция шаблона javascript):
...
<th class ='publisher' data-field="book.publisher" data-formatter="renderPublisher">Publisher</th>...
<script>
var Publisher = "{{ Publisher }}";
var publisher = '';
function renderPublisher(value) {
return `select style="width: 7em" name="" id="">
for (publisher in ${Publisher}) {
<option value="eText" ${(value === 'eText') ? 'selected="selected"' : ""}>
publisher</option>}</select>}`
</script>
Но мой цикл for в javascript не работает, похоже, что у меня какая-то проблема с использованием литерала шаблона в цикле for.
Как исправить мою функцию?
Вам нужно проверить значение Publisher перед тем, как зацикливать его, если это массив, используйте for-of, если объект, используйте for-in. Но в вашем случае, я видел, что вы печатаете издателя, а не его свойство, так что я думаю, что это должен быть массив (измените, если я ошибаюсь). Что-то вроде :
var publishers = "{{ Publisher }}"; // no capital for variable' name
function renderPublisher(value) {
var renderString = 'select style="width: 7em" name="" id=""'
for (publisher of publishers) {
renderString += `
<option value="eText" ${value === 'eText' ? "selected" : ""}> ${publisher}</option>`
}
renderString += '</select>'
return renderString;
}