我正在使用一个dojo widget通过一个dojo Template(使用django模板)显示一些数据,当在html元素内部使用for循环时,循环只执行一次,并且不能访问当前正在循环的变量,然而,在表外部使用相同的循环可以按预期循环。
我不知道为什么这个{% 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次(如元素所示)并且具有数据时仅循环一次。
1条答案
按热度按时间gr8qqesn1#
我认为这是dojo中的一个bug,我为此在dojox中创建了一个github问题see it here