2016-07-17 41 views
0

在角(1.3),我希望能够进入我person对象的dob领域,这有一个名为age另一个属性,其计算基础上,dob年龄的属性。绑定到这是一个公式暴露出另一个

所以我有字段中输入dob为:

<div class="form-group"> 
    <input class="form-control" type="date" ng-model="player.dob" placeholder="DD/MM/YYYY" /> 
</div> 

,我展示了一些信息的用户类型,因为他们输入(姓名,性别,说明等),但是当用户进入dob,我想自动显示age这样的:

<div>{{player.age}}</div> 

我怎么能这样做?

感谢

+0

我觉得这里是你的答案http://stackoverflow.com/questions/24883308/convert-birthday-to-age-in-angularjs – uzaif

+0

尼斯一个,我没有考虑使用过滤器。我甚至不需要年龄属性。谢谢 – Rodders

回答

1

我不知道这是否是你在找什么,但如果我是正确的,你可以创建一个自定义过滤器来显示基于的年龄0输入,如下图所示:

angular.module('app', []) 
 
    .controller('mainCtrl', function($scope) { 
 
    $scope.player = {}; 
 
    }) 
 

 
    .filter('ageFilter', function() { 
 
    return function(dob) { 
 
     var ageDifMs = Date.now() - new Date(dob).getTime(); 
 
     var ageDate = new Date(ageDifMs); 
 
     return Math.abs(ageDate.getUTCFullYear() - 1970); 
 
    }; 
 
    });
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <div class="form-group"> 
 
    <input class="form-control" type="date" ng-model="player.dob" placeholder="DD/MM/YYYY" /> 
 
    </div> 
 
    <hr> 
 
    <div ng-if="player.dob" ng-bind="player.dob | ageFilter"></div> 
 
</body> 
 

 
</html>

+1

与我最终做的略有不同,但最终,过滤器才是答案。谢谢 – Rodders

0

可以使用ngChange

<div class="form-group"> 
<input class="form-control" type="date" ng-model="player.dob" ng-change="calculateAge()" placeholder="DD/MM/YYYY" /> 

,然后在你的控制器:

$scope.calculateAge = function(){ 
    //do the calculations you want 
} 
相关问题