我有以下下划线代码,这些代码从外部JSON中提取数据并将其显示在列表中。
<script type="text/template" class="template">
<ul>
<% _.each( rc , function(productTile) {
if(_.findWhere(ids,productTile.id){
%>
<li class="productTile" data-id="<%= productTile.id %>">
<img src="<%= productTile.images[0] %>" alt=""/>
<h3>Demo<%= productTile["name"] %></h3>
<p><%= productTile.price.formatted %></p>
</li>
<% } }); %>
</script>
var listingTemplate = _.template(
$( "script.template" ).html()
);
在外部JSON文件中,大约有30种产品,但我只想显示有关6种特定产品的信息,这些信息是我在此内部JSON中声明的:
var templateData = {
"ultimate": [
{
"id": "50236775",
"id": "50237067",
"id": "50236776",
"id": "50236777",
"id": "50236778"
}
]
}
我正在使用,if(_.findWhere(ids,productTile.id){
但无法正常工作,编写方式有问题吗?
第一件事是您的内部JSON不正确,id
对象中不能有相同的键。您应该只创建一个数组ids
:
var ids = ["50236775","50237067","50236776","50236777","50236778"];
添加签入模板:
<script type="text/template" class="template">
<ul>
<% _.each( rc , function(productTile) {
//ids is external array passed to template
if(_.contains(ids, productTile.id)){
%>
<li class="productTile" data-id="<%= productTile.id %>">
<img src="<%= productTile.images[0] %>" alt=""/>
<h3>Demo<%= productTile["name"] %></h3>
<p><%= productTile.price.formatted %></p>
</li>
<%
}
});
%>
</ul>
</script>
试试这个有下划线的模板玩。
另一种方法:
在通过rc
模板过滤产品之前,请执行以下操作:
var rc = _.filter(rc, function(productTile){
return _.contains(ids, productTile.id);
});
在这种情况下,您不必更新模板。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句