Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dojo HTML模板:在HTML模板内重复一段HTML_Javascript_Html_Dojo - Fatal编程技术网

Javascript Dojo HTML模板:在HTML模板内重复一段HTML

Javascript Dojo HTML模板:在HTML模板内重复一段HTML,javascript,html,dojo,Javascript,Html,Dojo,我在一个单独的.HTML文件中有一个基于模板的dojo小部件和一个HTML模板 Dojo小部件: define("dojow/SomeWidgetName",[ "dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/text!./templates/MyHTMLFile.html"], function(declare, _WidgetBase, _TemplatedMixin, 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>

一些服务
someUsername
我需要的是根据dojo小部件中的“details”对象重复表中的行,因此每一行都包含来自该对象的数据。可能吗


谢谢。

据我所知:没有。Dojo的模板语言非常基本,只提供附加点/事件,您可以使用它们以编程方式更改它。这是Dojo的缺点/弱点之一(与Handlebar等模板引擎相比),即使是前核心提交者也这么认为


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

<ul data-dojo-attach-point="listNode"></ul>
这将产生以下HTML:

<ul data-dojo-attach-point="listNode">
    <li>test</li>
</ul>
  • 试验
因此,您可以将其放在代码的循环中(并创建许多子项),但正如您所看到的,模板语言本身缺少这样的功能


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

domConstruct.place(lang.replace("<li>{text}</li>", {
    text: "test"
}), this.listNode);
domConstruct.place(lang.replace(“
  • {text}
  • ”{ 文本:“测试” }),this.listNode);

    小注释:dojo/\u base/lang与小部件模板不一致。模板小部件中的占位符的编写方式类似于
    ${placeholder
    ,但在
    dojo/\u base/lang
    中,占位符被定义为
    {placeholder}
    (不带美元符号)。

    也许您应该让问题更具体一些(显示示例模板、数据等)。我添加了新的详细信息。请始终将对象和数组放在构造函数中,否则这些函数将全局可用(内存泄漏)。非常感谢您提供的这些信息。我使用您的小教程成功地使其正常工作。棒极了。
    domConstruct.place(lang.replace("<li>{text}</li>", {
        text: "test"
    }), this.listNode);