我设置了Angular-Meteor应用程序,允许用户编辑他们的出生日期。我在输入字段上使用bootstrap3-datepicker。
表单中的输入字段定义如下:
<div class="form-group">
<label for="dateOfBirth" class="control-label">Date of Birth:</label>
<input type="date" id="dateOfBirth" class="form-control" ng-model="profileEdit.profile.dateOfBirth"/>
</div>
选择并显示日期在前端工作正常,但保存表单时不存储日期(所有其他数据都是)。如果在使用表单编辑记录之前存在日期,则日期将丢失。
这是我的控制者:
class ProfileEdit {
constructor($stateParams, $scope, $reactive) {
'ngInject';
this.profile = Meteor.user().profile;
$('#dateOfBirth').datepicker({
format: "dd.mm.yyyy",
weekStart: 1,
startDate: "01.01.1940",
startView: 2
});
}
save() {
var profile = {
firstName: this.profile.firstName,
lastName: this.profile.lastName,
gender: this.profile.gender,
dateOfBirth: this.profile.dateOfBirth,
level: this.profile.level,
description: this.profile.description
}
Meteor.call('users.profile.update', profile, function(error, result) {
if(error){
console.log("error", error);
}
if(result) {
console.log('Changes saved!');
profile = {}
}
});
}
}
在保存表单数据之前将profileEdit.profile.dateOfBirth
记录到控制台会产生undefined
。
在我看来,我已经失去了表单和save()
方法之间的日期。 为什么会这样?
答案 0 :(得分:1)
我和另一个日期选择器有同样的问题,看来当第三方插件更新DOM时,它不会更新附加到它的模态。我必须做的是使用datepicker的事件来捕获更改并以编程方式更新字段,IE:
$('.datepicker').datepicker()
.on('changeDate', function(e) {
// update your model here, e.date should have what you need
});
http://bootstrap-datepicker.readthedocs.io/en/latest/events.html