循环的Dojo模板不在html表内循环

8ehkhllq  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(156)

我正在使用一个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次(如元素所示)并且具有数据时仅循环一次。

gr8qqesn

gr8qqesn1#

我认为这是dojo中的一个bug,我为此在dojox中创建了一个github问题see it here

相关问题