簡體   English   中英

underscore.js模板中的每個循環

[英]each loop in underscore.js template

我在這里做錯了但我看不到它! 我試圖在下划線模板中循環一個數組。 它不起作用,所以我錯過了一些東西,這是我的代碼,我的模板工作正常,否則,它只是_.each的東西,它們正在喋喋不休:

<script type="text/template" id="PageContent">
    <div class="col2">
        <@ _.each([0,1,2,3,4], function(i) { @>  <p><@ i @></p> <@ }); @>
    </div>    
</script>

我也做了一些像這樣的模板設置:

_.templateSettings = {
    interpolate: /\<\@(.+?)\@\>/gim
};

因為您只在自定義模板設置中定義了插值正則表達式,所以下划線不知道何時計算表達式。 定義自定義模板設置時,需要定義和區分插值和評估。 從下划線template()文檔:

定義插值正則表達式和(可選)計算正則表達式以分別匹配應插入和計算的表達式。 如果未提供評估正則表達式,則模板將僅能夠插值。

在標准(無自定義設置)模板中,差異是評估: <% %>和值插值: <%= %>

因此,例如,上面的模板應該是(使用標准模板設置):

<% _.each([0,1,2,3,4], function(i) { %>  <p><%= i %></p> <% }); %>

如果要繼續使用自定義設置,還需要在_.templateSettings中定義評估正則表達式。 根據您的問題和評論,例如:

   _.templateSettings = {
      interpolate: /\<\@\=(.+?)\@\>/gim,
      evaluate: /\<\@(.+?)\@\>/gim
  };

然后更新您的模板以使用圍繞代碼塊的評估表單和圍繞值的插值形式,如下所示:

<script type="text/template" id="pageContent">
    <div class="col2">
        <@ _.each([0,1,2,3,4], function(i) { @>  <p><@= i @></p> <@ }); @>
    </div>    
</script>

來源: http//documentcloud.github.com/underscore/#template

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM