代码之家  ›  专栏  ›  技术社区  ›  Dayle Salmon

AngularJS-ng repeat未使用过滤器更新到正确的结果

  •  1
  • Dayle Salmon  · 技术社区  · 8 年前

    我有一个这样的重复:

    <div class="event block block--fullwidth nga-default nga-stagger nga-fade" data-ng-repeat="event in (filteredEvent = (Events.events | filter:Events.query | myDateRange:Events.dateFrom:Events.dateTo:Events.specificDate | orderBy:Events.orderEvent)) | limitTo:Events.limit"></div>
    

    我还在页面顶部有几个搜索过滤框(输入/选择框),用户可以使用它们来过滤搜索结果。其中一个示例是搜索框(如下所示:

    <input id="txt1" class="input--fullwidth" type="text" data-ng-model="Events.query.TotalLocation" placeholder="Enter a region, place or postcode" data-ng-change="Events.limit = 6" />
    

    从某种意义上说,当您开始在搜索框中键入内容时,结果会更新。然而,当您按退格键使搜索框为空时,它不会返回到原始搜索长度(第一次加载时可能为992,但退格时最终为940)。它似乎对我的许多搜索过滤器都这样做了。

    我就是想不出来,谢谢你的帮助。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dayle Salmon    8 年前

    由于某种原因,这个解决方案真的很奇怪。通过调整我的ng-repeat以包含一个包含ng-repate变量的数据属性,似乎可以使它工作。例如。

    <div class="event block block--fullwidth nga-default nga-stagger nga-fade" data-ng-repeat="event in (filteredEvent = (Events.events | filter:Events.query | myDateRange:Events.dateFrom:Events.dateTo:Events.specificDate | orderBy:Events.orderEvent)) | limitTo:Events.limit" data-var="{{filteredEvent.length}}"></div>