我试图将ng-repeat中的日期转换为年龄。转换日期到ng-repeat的年龄
但是,当我用我的控制器范围:
$scope.calculateAge = function(birthday) {
var ageDifMs = Date.now() - new Date(birthday);
var ageDate = new Date(ageDifMs);
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
或当我使用过滤器:
myApp.filter('ageFilter', function() {
function calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
return function(birthdate) {
return calculateAge(birthdate);
};
});
有了这个HTML:
<div ng-repeat="user in users | limitTo:20" class="col-50">
<div class="memba-picture" style="background:url({{ user.picture }}">
<div class="memba-gradient"><i class="fa fa-check memba-wanted"></i></div>
<span class="memba-title">{{user.first_name}}</span>
<p class="memba-age">{{user.more.birthday | ageFilter}} Ans</p> <!-- Or calculateAge -->
</div>
</div>
它不工作。但是当我在控制器中获得与作用域的日期时,它就可以工作。 我认为这是可能是因为当我约会,我有良好的格式转换它:
userRef.child(birthday).once('value', function(snap) {
$scope.birthday = new Date(snap.val());
})
我怎样才能得到正确的年龄?
谢谢。
'user.more.birthday'看起来像什么?抛出任何错误? – charlietfl
像这样:1992-05-07T22:00:00.000Z,我有任何错误...它只是当我想使用过滤器(或范围),什么也没有发生...... – PositivProd
创建演示在plunker或其他沙箱使用您的过滤器 – charlietfl