首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据ng-repeat中两个日期之间的差异来过滤数据?

如何根据ng-repeat中两个日期之间的差异来过滤数据?
EN

Stack Overflow用户
提问于 2015-10-24 11:31:50
回答 1查看 739关注 0票数 1

我使用ng-repeat来显示从api获得的每个数据,如下所示。

代码语言:javascript
复制
<div ng-repeat="festival in festivals | filter:searchText:dateSelect"  class="festival-list-box col-xs-12 col-sm-4">
<div class="festival-list">
  <div class="image-gallery-box">
    <img src="{{ festival.festival_pictures| firstImage }}" alt="">
  </div>
  <div class="text-box-contain">
      <h2>{{ festival.festival_name }}</h2>
      <p class="tagline-list">Type &emsp; <span class="tag-word">
      <strong>Dynamic, Relax</strong></span></p>
      <p>Date &emsp;
        <span class="date-list-color" ng-init="oneDay = 24*60*60*1000; dateCompare = 99">
          <strong>
            {{ festival.festival_start_date| cmdate:'MM/dd/yyyy' }} - {{festival.festival_end_date| cmdate:'MM/dd/yyyy' }}
          </strong>
        </span>
      </p>

    <!-- <input type="hidden" value="6" ng-model="diffdateCal"> -->

      <p>Price &emsp; <span class="price-list-color"><strong>20,000&#8361;</strong></span></p>
      <p>Location&emsp;<span class="Location-list-color">
        <strong>
          {{festival.festival_address}}
        </strong></span>
      </p>
      <p><a class="btn btn-info" href="#/festivalDetails/{{festival.id}}" role="button">View details »</a></p>

  </div>
</div>

但是我需要通过在gap by festival_end_date和festival_start_date by this input之间选择options input来过滤数据。

代码语言:javascript
复制
<select class="form-control" ng-model="dateSelect">
        <option value="0">Any Dates</option>
        <option value="6">1 Week</option>
        <option value="29">1 Month</option>

      </select>

所以我只需要显示1-6天,7- 29天和每天之间的日期不同的数据取决于用户被选择的选项。

我该怎么做呢?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-10-24 16:25:01

您可以在控制器中定义您的范围,并使用ngOptions将其绑定到您的选择元素。

JS:

代码语言:javascript
复制
$scope.dateRanges = 
[
  { Name:'Any Dates', min: Number.MIN_VALUE, max: Number.MAX_VALUE },
  { Name:'1 week', min: 1, max: 7 },
  { Name:'1 month', min: 7, max: 30 },
];

HTML:

代码语言:javascript
复制
<select
  ng-options="item.Name for item in dateRanges"
  class="form-control"
  ng-model="dateSelect"></select>

然后,您的筛选器函数将首先计算开始日期和结束日期之间的天数,然后将其与所选日期范围的最小值和最大值进行比较。您可以将其定义为控制器中的谓词函数:

JS:

代码语言:javascript
复制
$scope.rangeLength = function(item){
  var days = (item.festival_end_date - item.festival_start_date) / (24*60*60*1000);
  return $scope.dateSelect && days >= $scope.dateSelect.min && days < $scope.dateSelect.max;
}

HTML:

代码语言:javascript
复制
<div ng-repeat="festival in festivals | filter:rangeLength">
  ...
</div>

JsFiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33314254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档