AngularJS - 如果日期在过去 6 个月内,则隐藏/显示 div [英] AngularJS - hide/show div if date is within last 6 months

查看:34
本文介绍了AngularJS - 如果日期在过去 6 个月内,则隐藏/显示 div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 ng-repeat 显示日期列表以及在该日期购买的信息.

HTML:

<p>{{ data.purchasedOn.substring(6, data.purchasedOn.length - 2) |日期:'dd/MM/yyyy' }}</p><br><p>{{ data.purchaseDescription }}</p>

显示:

01/02/2013Lorem ipsum dolor 坐 amet,consectetur adipisicing 精英"10/04/2014Lorem ipsum dolor 坐 amet,consectetur adipisicing 精英"02/08/2014Lorem ipsum dolor 坐 amet,consectetur adipisicing 精英"13/06/2014Lorem ipsum dolor 坐 amet,consectetur adipisicing 精英"19/02/2013Lorem ipsum dolor 坐 amet,consectetur adipisicing 精英"

purchasedOn 是在当前月份的最后 6 个月内时,我如何才能只显示 {{ data.purchaseDescription }}?

解决方案

假设你想显示 purchaseOn 而不是描述,你可以使用像 此处描述的这个 用于确定 6 个月前的日期.

function addMonths(date, Months) {date.setMonth(date.getMonth() + 月);归期;}

然后定义一个函数来获取布尔显示/隐藏值:

function shouldHide(purchasedOn){var purchaseDate = Date.parse(purchasedOn);var SixMonthsAgo = addMonths(new Date(), -6);var hide = purchaseDate <六个月前 ?真假;返回隐藏;}

现在您可以在 <p> 元素的 ng-hide 中使用您的函数

{{ data.purchaseDescription }}</p>

编辑如果你只是想隐藏整个元素,你可以像这样创建一个过滤器功能:

$scope.filterOldDates = function(date){如果(应该隐藏(日期)){返回假;}返回真;};

你会像这样使用它:

I have an ng-repeat that displays a list of dates, and information about purchases on that dates.

HTML:

<div ng-repeat="data in MyData">
    <p>
        {{ data.purchasedOn.substring(6, data.purchasedOn.length - 2) | date:'dd/MM/yyyy' }}
    </p>
    <br>
    <p>
        {{ data.purchaseDescription }}
    </p>
</div>

Which displays:

01/02/2013
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"

10/04/2014
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"

02/08/2014
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"

13/06/2014
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"

19/02/2013
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"

How can i only show the {{ data.purchaseDescription }} when purchasedOn is within the last 6 months from the current month?

解决方案

Assuming that you want to show purchasedOn but not the description, you could use a function like this one described here to determine a date 6 months prior.

function addMonths(date, months) {
  date.setMonth(date.getMonth() + months);
  return date;
}

Then define a function to get a boolean show/hide value:

function shouldHide(purchasedOn){
    var purchaseDate = Date.parse(purchasedOn);
    var sixMonthsAgo = addMonths(new Date(), -6); 
    var hide = purchaseDate < sixMonthsAgo ? true : false;
    return hide;
}

Now you can just use your function in an ng-hide in your <p> element

<p ng-hide={{shouldHide(data.purchasedOn)}}>
    {{ data.purchaseDescription }}
</p>

EDIT If you do just want to hide the entire element, you could make a filter function like this:

$scope.filterOldDates = function(date)
{
    if(shouldHide(date)){
        return false; 
    }
    return true; 
};

You would use it like this:

<div ng-repeat="data in MyData | filterOldDates">

这篇关于AngularJS - 如果日期在过去 6 个月内,则隐藏/显示 div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆