【问题标题】:AngularJS - Access filtered data in another divAngularJS - 访问另一个 div 中的过滤数据
【发布时间】:2015-08-02 16:33:11
【问题描述】:

我有一个过滤器应用于搜索功能,用户在文本框中键入搜索查询,并且 ng-repeat 中的结果被过滤。我的代码是:

<div class="number-results">xxxxxx results found</div>
    <div ng-repeat="product in products | topProductsSearchFilter:searchData" class='top-product-icon' ng-click="productClicked(product)">
        <img class='top-product-icon-img' ng-src="{{product.thumbnail}}">
        <div class='top-product-icon-title' ng-bind="product.title"></div>
    </div>

如你所见,我在 ng-repeat 中调用了过滤器:topProductsSearchFilter:searchData

searchData 是搜索文本框的 ng-model:

<input ng-model="searchData" type="text"/>

我编写的过滤器生成了一个 Products 类型的 JSON 数组。在 html 中,我想在这个 div 中显示过滤器返回的结果数:

<div class="number-results">xxxxxx results found</div>

我的问题是如何最好地访问 ng-repeat div 标签之外的 JSON 数组的长度。

【问题讨论】:

    标签: javascript html angularjs


    【解决方案1】:

    您可以在ng-repeat 表达式中创建过滤列表/别名并获取其长度:

    <div ng-repeat="item in filteredItems = (items | someFilter)">
      {{item}}
    </div>
    <div>number of results: {{filteredItems.length}} out of {{items.length}}</div>
    

    【讨论】:

    • 你也可以使用item in items | someFilter as filteredItems
    • @Phil,是的,在 1.3+ 中,但它仍然受到更多限制(我认为),因为这种方法可用于中间过滤结果(当有多个过滤器时),而 as 不能
    • 这是一个公平的选择。我从没想过只将一些过滤后的部分分配给变量,但我可以看到这很方便
    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2023-03-13
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多