尝试在纸张日期选择器中设置日期时,超出了最大调用堆栈

时间:2016-03-15 14:47:15

标签: javascript date polymer polymer-1.0 paper-elements

使用https://github.com/bendavis78/paper-date-picker(基于moment.js) 我想在将来设置日期(可选) offset

元素:

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

以下属性有效:

properties: {
    date: {
        type: Date
    }
}

但是这会使控制台充满&#34; Uncaught RangeError:超出最大调用堆栈大小。&#34;来自聚合物:1258&amp;聚合物迷你: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;
        }
    }
}

如果&#34;值&#34;那么日期变换是什么似乎并不重要。块在那里它失败了。 记录函数中的值会显示上述解析日期,但我猜我的期望与组件不同?

有人可以找到我出错的地方吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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