Tengo una aplicación web, frontend usando HTML5 normal, backend usando Django.
En la página de inicio, tengo una función literal de plantilla de JavaScript. Lo que se supone que representa todo el valor individual en un cuadro de selección de un conjunto de consultas pasado del backend a una tabla de arranque.
ver.py:
def view_material(request): query_results_publisher = Publisher.objects.all() return render(request, 'material/index.html', context={'Publisher':query_results_publisher}) el editor es un conjunto de consultas: <QuerySet [<Publisher: >, <Publisher: Arkib Negara Malaysia>, <Publisher: DBP>, <Publisher: Edward Elgar> ...]
index.html (tabla de arranque + función literal de plantilla de 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>Pero mi bucle for en la función literal de la plantilla de javascript no funciona, parece que tengo algún problema con el uso literal de la plantilla en el bucle for.
¿Cómo corregir mi función?
Necesita verificar el valor de Publisher antes de repetirlo, si es una matriz, use for-of, si es un objeto, use for-in. Pero en su caso, vi su editor de impresión, no su propiedad, por lo que lo invito debe ser una matriz (cámbiela si me equivoco). Algo como :
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;}