繁体   English   中英

Dojo HTML模板:在HTML模板中重复一段HTML

[英]Dojo HTML template: repeating a piece of HTML inside the HTML template

我在单独的.html文件中有一个基于模板的dojo小部件,以及一个HTML模板。

Dojo小部件:

define("dojow/SomeWidgetName",[
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojo/text!./templates/MyHTMLFile.html"], function(declare, _WidgetBase, _TemplatedMixin, template) {

return declare([_WidgetBase, _TemplatedMixin], {
    templateString: template,
    baseClass: 'dojowBaseClass',
    details:{} // THIS IS THE OBJECT THAT WILL BE LOOPED
    //  your custom code goes here
});});

HMTL模板:

<table> 
  <tr>
     <td>SomeService</td>
     <td>someUsername</td>
  </tr> </table>

我需要的是根据我在dojo小部件内拥有的“详细信息”对象重复表的行,因此每一行都包含来自该对象的数据。 那可能吗?

谢谢。

据我所知:没有。 Dojo的模板语言非常基础,只提供可用于以编程方式更改它的附加点/事件。 这是Dojo的缺点/弱点之一(与Handlebars之类的模板引擎相比),甚至前核心通勤者都这么认为。


因此,创建循环结构的另一种方法是以编程方式创建循环结构。 假设我们的模板如下:

<ul data-dojo-attach-point="listNode"></ul>

然后,您可以在代码中执行以下操作:

domConstruct.create("li", {
    innerHTML: "test"
}, this.listNode);

这将导致以下HTML:

<ul data-dojo-attach-point="listNode">
    <li>test</li>
</ul>

所以你可以将它放在代码中的循环中(并创建许多子项),但正如你所看到的,模板语言本身缺乏这样的功能。


如果要加载“模板”,可以定义子项模板,并使用以下命令加载它:

domConstruct.place(lang.replace("<li>{text}</li>", {
    text: "test"
}), this.listNode);

小提示dojo/_base/lang与小部件模板不一致。 模板化窗口小部件中的${placeholder类似于${placeholder ,但在dojo/_base/lang ,占位符定义为{placeholder} (没有美元符号)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM