Я использую виджет dojo для отображения некоторых данных через шаблон dojo (который использует шаблоны django). При использовании цикла for внутри элемента html цикл выполняется только один раз и не может получить доступ к текущей переменной цикла. Однако тот же цикл за пределами таблицы может выполнять цикл, как и ожидалось.
Я не уверен, почему этот цикл {% for%} не будет работать внутри элемента, но он работает снаружи.
Я попытался включить "dojo / dom-construct", и в моем виджете есть "dojox / dtl / tag / logic". Мой виджет в настоящее время определяется следующим образом:
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_OnDijitClickMixin",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"dojo/text!views/siteInfo/siteBatteries.html",
"dijit/registry",
"dojo/dom",
"dojox/dtl/_DomTemplated",
"dojox/dtl/tag/logic",
"dojo/dom-construct",
],function(declare, _WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin, template, registry, dom, _DomTemplated){
return declare([_WidgetBase, _OnDijitClickMixin, _TemplatedMixin, _WidgetsInTemplateMixin, _DomTemplated], {
// WidgetLogic
});
});
Шаблон:
<div class="container" id="SiteOverviewController">
{{ batteryList.length }}
<table>
<thead>
<tr>
<th>ObjectId</th>
</tr>
</thead>
<tbody>
{% for battery in batteryList %}
<tr>
<th>{{ battery.attributes.OBJECTID }}</th>
</tr>
{% endfor %}
</tbody>
</table>
END TABLE
START DIV
{% for battery in batteryList %}
<div>{{ battery.attributes.OBJECTID }}</div>
{% endfor %}
</div>
Вывод шаблона выше выглядит следующим образом:
<div class="container" id="SiteBatteryController" widgetid="SiteBatteryController" style="">
4
<table style="">
<thead style="">
<tr style="">
<th style="">ObjectId</th>
</tr>
</thead>
<tbody style="">
<tr style="">
<th style=""></th>
</tr>
</tbody>
</table>
END TABLE
START DIV
<div style="">2225</div>
<div style="">2226</div>
<div style="">2227</div>
<div style="">2228</div>
</div>
Из вывода видно, что таблица содержит только одну строку с пустым выводом:
<tr style=""><th style=""></th></tr>
и повторяется только один раз, когда он должен повторяться 4 раза (как видно с элементами) и иметь данные.