使用带有 JavaScript 模板文字函数的 for 循环
Posted
技术标签:
【中文标题】使用带有 JavaScript 模板文字函数的 for 循环【英文标题】:use for loop with JavaScript template literal function 【发布时间】:2021-12-21 19:28:08 【问题描述】:我有一个网络应用,前端使用普通 html5,后端使用 Django。
在前端页面中,我有一个 javascript 模板文字函数。这应该将所有单个值呈现到从后端传递到引导表的查询集的选择框中。
view.py:
def view_material(request):
query_results_publisher = Publisher.objects.all()
return render(request, 'material/index.html', context='Publisher':query_results_publisher)
发布者为查询集:<QuerySet [<Publisher: >, <Publisher: Arkib Negara Malaysia>, <Publisher: DBP>, <Publisher: Edward Elgar>
...]
index.html(bootstrap table + 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>
但是我在 javascript 模板文字函数中的 for 循环不起作用,似乎我在 for 循环中的模板文字使用有些问题。
如何修正我的功能?
【问题讨论】:
【参考方案1】:循环前需要检查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;
【讨论】:
publisher 是查询集,for-in 和 for-of 都试过了,都报错:可能对意外成员进行迭代 我对 django 不太了解,但是,您需要将查询集转换为这样的列表:***.com/a/53986954/15623535 并确保发布者的类型是数组或对象,而不是带有 typeof 的字符串(使用双引号将使其成为字符串“ 但更改为列表后仍然无法正常工作,它显示字符串而不是选择框 只显示一些数字,不显示项目名称。并在脚本中减弱:可能对意外成员进行迭代 尝试删除双引号:var publishers = Publisher ;你能在字符串中显示 Publisher 的值吗?以上是关于使用带有 JavaScript 模板文字函数的 for 循环的主要内容,如果未能解决你的问题,请参考以下文章
你可以在javascript中使用模板文字创建对象属性名称吗?
Javascript函数的模板,带有作为对象传递的可选和必需参数
如何将带有 django 标签的 javascript 代码加载到我的 django 模板中