开发者问题收集

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

2016-03-15
4305

使用 https://github.com/bendavis78/paper-date-picker (基于 moment.js) 我试图将日期(可选)设置为未来 offset 个月。

元素:

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

以下属性有效:

properties: {
    date: {
        type: Date
    }
}

但这会使控制台充斥着“Uncaught RangeError:超出最大调用堆栈大小。”来自polymer:1258 &polymer-mini:964

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”块存在,它就会失败。 记录函数中的值显示了上述解析日期,正如我所期望的那样,但我想我的期望与组件不同?

有人能发现我哪里出错了吗?

2个回答

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

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

user6150843
2016-04-03

我可以通过插入 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';
        }
    }
}
Lesley
2016-03-15