2013-10-31 283 views
1

AngularJS新手试图限制搜索过滤器到一个非常嵌套的数组项。这里是我的输出的一个镜头:AngularJS - 搜索过滤器嵌套数组

<div ng-controller="listController"> 
    <input type="text" ng-model="searchMe" /> 
    <table class="table"> 
    <tr> 
     <th>Product Name</th> 
     <th>Color</th> 
     <th>Size</th> 
     <th>Features</th> 
    </tr> 
    <tr ng-repeat="p in prods | filter:searchMe"> 
     <td>{{p.products.1.ProductName}}</td> 
     <td>{{p.products.1.Color}}</td> 
     <td>{{p.products.1.Size}}</td> 
     <td> 
      <ul ng-repeat="feats in p.features"> 
      <li>{{feats}}</li> 
      </ul> 
     </td> 
    </tr> 
    </table> 
</div> 

这显示在列表中的所有项正确,包括附加功能。现在产品阵列中至少有十几个项目,包括描述,价格等。问题是如果我在框中搜索某些东西,它会搜索整个数组。现在我试图将搜索输入更改为:

<input type="text" ng-model="search.products.1.ProductName" /> 
<input type="text" ng-model="search.p.products.1.ProductName" /> 
<input type="text" ng-model="search.ProductName" /> 

但是,只要我输入一个字符,所有东西都会消失。是的,我也将“我”从搜索过滤器中删除(|过滤器:搜索)。如何将搜索绑定到嵌套数组中的特定项目?我还需要能够按功能进行搜索,但我希望通过首先解决这个问题,它会将我带入功能。另外我的内容正在被json文件拉入,如果这有所作为。搜索功能最终也将是复选框,而不是文本输入,但我认为它应该不重要,我仍然需要针对具体项目(名称,颜色,大小等)。

想法/想法/建议?

+0

您可能需要编写自定义过滤器来实现此目的。 – kubuntu

+0

应找到大量的教程,以各种方式做到这一点 – charlietfl

+0

我已经经历了几个,但他们没有解决嵌套的项目,至少我发现的。作为编写自定义过滤器的新手不是最简单的任务。有没有关于如何编写自定义过滤器的建议? – cfox

回答

0

我暂时的解决方案是重构json文件。也许当我对Angular的知识扩展时,我将能够重新审视。