选择日期时未设置日期输入

时间:2020-06-25 15:13:17

标签: angularjs date input

我正在尝试创建一个函数,该函数根据所选的出生日期自动计算一个人的年龄。

<div class="col-sm-3">
      <label class="control-label">DOB</label>
      <date-input name="{{member.MemberID + 'Birthdate'}}" max="controller.today" ng-model="member.NoServicesProvided.birthDate" ng-change="controller.calcAge(member)"></date-input>
</div>
<div class="col-sm-3" ng-class="{'has-error': noServicesProvidedForm[member.MemberID + 'Age'].$invalid && noServicesProvidedForm.rootFormSubmitted()}">
      <label class="control-label">Age</label>
      <input name="{{member.MemberID + 'Age'}}" type="text" maxlength="2" class="form-control input-sm" ng-model="member.NoServicesProvided.age" required valid-number>
</div>
function calcAge(member) {
     if(member.NoServicesProvided.birthDate) {
           var deltaDate = Date.now() - member.NoServicesProvided.birthDate.getTime();
           var ageDate = new Date(deltaDate);
           member.NoServicesProvided.age = Math.abs(ageDate.getUTCFullYear() - 1970);
           console.log(member.NoServicesProvided.age);
     } 
}

首次输入日期时出现问题。当我选择一个日期时,出于某种原因,它说member.NoServicesProvided是未定义的。此NoServicesProvided属性正在页面上的其他位置使用,没有问题。然后,当我选择另一个日期时,它突然起作用,但是输入的是第一个日期,而不是第二个。

有什么我想念的吗?请知道我需要保持这种格式。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

找到了解决方案:

在calcAge函数中,将代码包装在$ timeout(function(){...});