如何使用动态添加的新结果保留过滤结果?

时间:2015-01-02 10:29:04

标签: angularjs

我使用无限滚动包来动态加载结果。我有一组过滤器,根据选择的过滤器显示我想要的结果。

结果不会以任何过滤顺序返回到前端。我想要实现的是将未经过滤的结果返回到我可能已经选择的过滤状态。

例如,一个过滤器是一个星级评级,让我说我的过滤器中选择了3个和4个星。如何在该过滤器中返回新加载的结果。

我想我可以将过滤器发送回后端,专门请求我正在寻找的内容,但我正在寻找一个有角度的解决方案。

这里是遍历每家酒店的ng-repeat我希望任何新加载的结果都要经过任何已选择的过滤器:

<div ng-repeat="hotel in (filteredHotels = (hotelResults |  hotelRatingsFilter:ratings)) | startFrom:(currentPage - 1)*10 | limitTo:10 " class="hotel-results-container">
  <ul>
   <li>{{hotel.starRating}}</li>
  </ul>
</div>

这是与后端通信的代码,据我所知(我没有写过)

.constant('HOTEL_SEARCH_CONSTANTS',{
    httpSettings:
    {
        url:'/hotel/hotelsearch/search',
        method:'POST'
    }
})



.service('hotelSearchService',     ['CachedObservable','$http','HOTEL_SEARCH_CONSTANTS','HOTEL_CONSTANTS','baseSearchSettings','loadingScreen',
   function(CachedObservable,$http,HOTEL_SEARCH_CONSTANTS,HOTEL_CONSTANTS,baseSearchSettings,loadingScreen){
CachedObservable.call(this)
var _this = this,
    p

this.search = function(searchParameters){
    var config = HOTEL_SEARCH_CONSTANTS.httpSettings
    var currentSearch = angular.extend(searchParameters,baseSearchSettings)
    config.data = {
        basicSearch: baseSearchSettings,
        hotelSearch: searchParameters
    }

    _this.update(p=$http(config), angular.extend(angular.copy(searchParameters),baseSearchSettings) )
    //Alert subscribers with both the promise and the search parameters
    //used

    loadingScreen.newSearch.update(p,HOTEL_CONSTANTS.loadingTemplates.loadingMessageTemplate)
    //Trigger a loading screen and specify the template to use
}

}])

谢谢

1 个答案:

答案 0 :(得分:0)

我发现这篇文章说如果数据发生任何变化,angular会迭代数组。看起来保持添加到数据阵列是安全的,任何已经使用的过滤器都将通过角度应用于更新的数据阵列。

第6步说:

“在阵列上添加了一个监视,如果阵列发生任何变化,它会再次触发第1步”

ng-repeat in angular