过滤AngularJS中的嵌套数组



我有一个JSON提要,看起来像这样:

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

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

<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>

标题搜索工作正常。但对于类别,搜索"1"匹配"1"、"12"one_answers"123"(同样,搜索"12"匹配"12"或"123")。有没有办法将搜索结果限制为完全匹配?我假设要做到这一点,"类别"数组必须以某种方式进行拆分,这样每个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>

您可以在另一个冒号后面添加一个比较函数或简单地添加true,以使angular只接受精确匹配。您还可以通过添加另一个管道来使用多个过滤器。它应该看起来像这样:

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

点击此处查看更多信息:https://docs.angularjs.org/api/ng/filter/filter

最新更新