在AngularJS中过滤嵌套数组

时间:2016-03-24 18:15:41

标签: angularjs multidimensional-array filter

我有一个看起来像这样的JSON Feed:

[{
    "title":"Post 1",
    "categories":[1]
},{
    "title":"Post 2",
    "categories":[12,123]
},{
    "title":"Post 3",
    "categories":[123]
}]

我希望能够通过"类别"来过滤它。和"标题",像这样:

<select ng-model="search.categories">
    <option value="">Categories</option>
    <option value="1">1</option>
    <option value="12">12</option>
    <option value="123">123</option>
</select>

<input ng-model="search.title">

<ul>
    <li ng-repeat="post in posts | filter:search">
        {{post.title}} - {{post.categories}}
    </li>
</ul>

标题搜索工作正常。但对于类别搜索&#34; 1&#34;匹配&#34; 1&#34;,&#34; 12&#34;和&#34; 123&#34; (同样地,&#34; 12&#34;匹配&#34; 12&#34;和&#34; 123&#34;)。有没有办法将搜索结果限制为完全匹配?我假设这样做&#34;类别&#34;数组必须以某种方式拆分,以便每个ID分别匹配。

另一种选择:我可以根据嵌套子循环的内容过滤父循环吗?这是代码:

<ul>
    <li ng-repeat="post in posts | filter:search">
        {{post.title}}
        <ul>
            <li ng-repeat="category in post.categories">
                {{category}}
            </li>
        </ul>
    </li>
</ul>

1 个答案:

答案 0 :(得分:0)

您可以在另一个冒号之后添加比较函数或简单true,以使角度仅接受完全匹配。您也可以通过添加另一个管道来使用多个过滤器。看起来应该是这样的:

<li ng-repeat="post in posts | filter : search.categories : true | filter : search.title">

在此处查看更多内容:https://docs.angularjs.org/api/ng/filter/filter