AngularJS - 如果日期在过去 6 个月内,则隐藏/显示 div [英] AngularJS - hide/show div if date is within last 6 months
问题描述
我有一个 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屋!
查看全文