输入字段中的日期未存储

时间:2016-05-11 18:57:05

标签: datepicker angular-meteor

我设置了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()方法之间的日期。 为什么会这样?

1 个答案:

答案 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