2012-06-27 26 views
2

我如何计算在每一个jQuery的模板项目和应用,如果该变量计数项目的jQuery模板

<script id="inventorySummaryTmpl" type="text/x-jquery-tmpl"> 
<tr> 
{{each response}} 
    {{if response.length === 2 }} 
     </tr><tr> 
    {{/if}} 
     <td><img src='${icon}'> ${title} </td> 
{{/each}} 

</tr> 

这是一个加载的JavaScript JSON并与jquery.TMPL

var ip = window.location.hash; 


    var request = $.ajax({ 
     type: 'GET', 
     url: 'ajax/dashboard/widgets/inventorySummary.xsp?ip='+ip.substring(1), 
     dataType: 'json' 
    }); 

    request.done(function(data){ 
     $("#inventorySummaryTmpl").tmpl(data).appendTo("#inventorySummaryContent"); 
    }); 

    request.fail(function(jqXHR, textStatus, errorThrown) { 
     console.log(errorThrown); 
     console.log(textStatus) 
    }); 

而且JSON交互

{ 

"response": [ 
    { 
     "icon": "workstation", 
     "nbItems": "38", 
     "title": "Workstations" 
    }, 
    { 
     "icon": "server", 
     "nbItems": "2", 
     "title": "Servers" 
    } 
] 

}

如果有人有任何ideeas。

回答

2

你非常接近。 each语句中的变量需要是您正在循环的完整集合。您还可以传递集合中每个项目的索引和值的自定义变量名称。基于您的代码,下面应该工作,但是如果你发布你收集的结构,我们就可以确保它

<script id="inventorySummaryTmpl" type="text/x-jquery-tmpl"> 
<tr> 
    {{each(index,resp) responses}} 
     {{if resp.length === 2 }} 
      </tr><tr> 
     {{/if}} 
     <td><img src='${resp.icon}'> ${resp.title} </td> 
    {{/each}} 
</tr> 

jQuery的文档:http://api.jquery.com/template-tag-each/

UPDATE

我已经更新了我的解决方案,现在我明白了你的所作所为。如果要在response数组中每三个(或六个或任何)元素后面开始新的ul(或tr),请检查当前元素的索引,而不是完整响应数组的长度。

<script id="inventorySummaryTmpl" type="text/x-jquery-tmpl"> 
    <ul> 
    {{each(i,el) response}} 
     {{if (i > 0 && i % 3 === 0) }} 
     </ul><ul> 
     {{/if}} 
     <li class="inventoryWrap"> 
     <img src='blueprint/images/wrap/icons/${icon}.png' class="inventoryPic"> 
     <span class="inventoryCount">${el.nbItems}</span> 
     <span class="inventoryText">${el.title}</span> 
     </li> 
    {{/each}} 
    </ul> 
</script> 

DEMOhttp://jsfiddle.net/jackwanders/ZzddF/1/

+0

我将对其进行测试,让大家都知道。在大约2-3小时 – Ancyent

+0

好吧所以我更新了主帖,我让你知道它不工作...你有完整的信息,所以你可以测试它。 – Ancyent

+1

也许你可以通过解释你想要什么样的最终HTML输出来提供帮助。我很难理解你想要你的模板做什么。 – jackwanders