尝试在 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
。
与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
。