尝试在 paper-date-picker 中设置日期时超出最大调用堆栈

Maximum call stack exceeded trying to set date in paper-date-picker

https://github.com/bendavis78/paper-date-picker(基于moment.js) 我正在尝试设置日期(可选)offset 个月后。

元素:

<paper-date-picker date="{{date}}"></paper-date-picker>

以下 属性 作品:

properties: {
    date: {
        type: Date
    }
}

但这会使控制台充满来自 polymer:1258 & polymer-mini:964

的 "Uncaught RangeError: Maximum call stack size exceeded."
properties: {
    date: {
        type: Date,
        value: function() {
          var myDate = new Date();
          var offset = this.attributes.offset ? parseInt(this.attributes.offset.value) : 0;
            myDate.setMonth(myDate.getMonth() + offset);
            return myDate;
        }
    }
}

日期转换是什么似乎无关紧要,如果有 "value" 块,它就会失败。 记录函数中的值会如我所料显示上述解析日期,但我想我的期望与组件不同?

谁能指出我哪里出错了?

我可以通过插入 new Date() 来重现错误(如控制台中所报告):

<paper-date-picker date="Tue Mar 15 2016 17:32:36 GMT+0000 (GMT Standard Time)"></paper-date-picker>

所以即使这是一个有效的日期时间,我猜日期选择器出于某种原因对 myDate 的格式不满意。我认为您应该尝试将该日期转换为 mm/dd/yyyy 格式的字符串。作为快速概念验证,请尝试:

properties: {
    date: {
        type: Date,
        value: function() {          
            return '03/15/2016';
        }
    }
}

您需要设置日历对象的日期而不是日期选择器对象,例如this.$.datepicker-id.$.calendar.date = new Date();

这在重置选择器的日期方面有效,但实际上我后来遇到了一个不同的问题,与无法重新选择我之前在关闭对话框后选择的相同日期有关。我不得不删除 calendar._updateSelection 中的逻辑以不将 selected.width 设置为 0px