javascript - 使用 doT.js 的嵌套列表(来自嵌套数组/对象)

标签 javascript jquery nested dot.js

有没有办法用 doT.js 生成嵌套列表?不幸的是,我的代码仅遍历数组中的第一个对象(g1)并忽略所有后续对象。有什么办法可以用 doT.js 解决这个问题吗?

结果应如下所示:

G1
 T11
 T12
 T13
G2
 T21
 T22
 T23

$(document).ready(function() {
  var data_simple = {
    level1: [{
      name: 't1'
    }, {
      name: 't2'
    }, {
      name: 't3'
    }]
  };

  var data_complex = {
    level1: [{
      name: 'g1',
      data: [{
        name: 't11'
      }, {
        name: 't12'
      }, {
        name: 't13'
      }]
    }, {
      name: 'g2',
      data: [{
        name: 't21'
      }, {
        name: 't22'
      }, {
        name: 't23'
      }]
    }]
  };

  var compiled_tpl_simple = doT.template($('[data-template="simple"]').html());
  var compiled_tpl_complex = doT.template($('[data-template="complex"]').html());
  
  var result_simple = compiled_tpl_simple(data_simple);
  var result_complex = compiled_tpl_complex(data_complex);

  $('#output_simple').append(result_simple);
  $('#output_complex').append(result_complex);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/dot/1.0.3/doT.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script data-template="simple" type="text/x-dot-template">
	<strong>Beg simple</strong><br>
	{{~it.level1 :element:index}}
		{{=element.name}}<br>
	{{~}}
  <strong>End simple</strong>
</script>

<script data-template="complex" type="text/x-dot-template">
	<strong>Beg complex</strong><br>
	{{~it.level1 :group:index}}
  	  {{=group.name}}<br>
      {{~group.data :element:index}}
    	{{=element.name}}<br>
      {{~}}
	{{~}}
  <strong>End complex</strong>
</script>

<div id="output_simple">

</div>
<div id="output_complex">

</div>

https://jsfiddle.net/srw2ogpz/

最佳答案

要解决此问题,请更改嵌套列表中的索引名称。

<script data-template="complex" type="text/x-dot-template">
<strong>Beg complex</strong><br>
{{~it.level1 :group:index}}
   {{=group.name}}<br>
   {{~group.data :element:index2}}
      {{=element.name}}<br>
   {{~}}
{{~}}
<strong>End complex</strong>
</script>

关于javascript - 使用 doT.js 的嵌套列表(来自嵌套数组/对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898853/

相关文章:

javascript - 从不是用 HTML 编写的 URL 位置自动下载内容。使用软件导航,按下按钮并下载内容

java - 附加到某些 javascript 文件的非法字符

Python:分配多个嵌套列表的最短方法是什么

XPath 选择嵌套除外的后代

jquery - 将表单发布的结果放入 Bootstrap 3 中的模式中

ruby-on-rails - 具有多个嵌套属性的 Rails 查询

javascript - 用数字创建日期 (new Date(2012, 03, ...) 给出错误的月份 (+1)

JavaScript 堆内存不足增加 Node 内存或优化我的代码

asp.net-mvc - 如何在 $.ajax 回调中 RedirectToAction?

jquery - 突出显示 Web 元素中的特定文本