2016-01-20 193 views
1

有沒有辦法用doT.js生成嵌套列表?不幸的是,我的代碼只遍歷數組中的第一個對象(g1),並忽略了以下所有內容。有什麼辦法可以用doT.js來解決這個問題嗎?與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"> 
 
\t <strong>Beg simple</strong><br> 
 
\t {{~it.level1 :element:index}} 
 
\t \t {{=element.name}}<br> 
 
\t {{~}} 
 
    <strong>End simple</strong> 
 
</script> 
 

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

 
<div id="output_simple"> 
 

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

 
</div>

https://jsfiddle.net/srw2ogpz/

回答

2

爲了解決在嵌套列表這個問題變化指數的名稱。

<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>