下划线过滤

用户1937021

我有以下下划线代码,这些代码从外部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){但无法正常工作,编写方式有问题吗?

尼兰詹·波拉瓦克(Niranjan Borawake)

第一件事是您的内部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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章