无效开始 "NaN" - 时间线 vis.js
Invalid start "NaN" - timeline vis.js
我不知道为什么,但当我尝试打电话时
this.$refs.timeline.on('rangechange', function (start, end, byUser, event) {
console.log('timechanged...')
})
我每次都收到这个错误 Error: Invalid start "NaN"
。
我在 google 上搜索了解决方案,但一无所获。
时间轴的选项如下:
timeline: {
stack: true,
start: new Date(),
end: new Date(1000 * 60 * 60 * 24 + (new Date()).valueOf()),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}
我已经登录 vis.js
脚本发生了什么。它开始记录开始和结束日期,然后抛出 error NaN
.
这是我遇到错误的 vis.js
脚本代码。
console.log('START', start)
console.log('END', end)
var newStart = start != null ? util.convert(start, 'Date').valueOf() : this.start,
newEnd = end != null ? util.convert(end, 'Date').valueOf() : this.end,
max = this.options.max != null ? util.convert(this.options.max, 'Date').valueOf() : null,
min = this.options.min != null ? util.convert(this.options.min, 'Date').valueOf() : null,
diff;
// check for valid number
if (isNaN(newStart) || newStart === null) {
throw new Error('Invalid start "' + start + '"');
}
if (isNaN(newEnd) || newEnd === null) {
throw new Error('Invalid end "' + end + '"');
}
有谁知道如何解决这个问题?谢谢。
这是因为 new Date()
创建了一个对象,而不是一个数字,并且您的函数期望日期是一个数字。因此 NaN
= 不是数字。
[编辑] 将您的测试逻辑更改为:
console.log('START');
console.dir(start);
console.log('END');
console.dir(end);
var newStart = !isNaN(start) ? util.convert(start, 'Date').valueOf()
: this.start
,newEnd = !isNaN(end) ? util.convert(end, 'Date').valueOf()
: this.end
,max = this.options.max != null ? util.convert(this.options.max, 'Date').valueOf() : null
,min = this.options.min != null ? util.convert(this.options.min, 'Date').valueOf() : null
,diff;
//check for valid number
if ( isNaN(newStart) ) {
throw new Error('Invalid start "' + start + '"');
}
if ( isNaN(newEnd) ) {
throw new Error('Invalid end "' + end + '"');
}
尝试使用 Date.now() - 这 returns 自 1970 年 1 月 1 日以来的毫秒数。
类似于:
timeline: {
stack: true,
start: Date.now(),
end: Date.now() + (1000 * 60 * 60 * 24),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}
如果start
| end
应该是 Date 对象(不是数字)你可以这样做:
timeline: {
stack: true,
start: new Date(),
end: new Date(Date.now() + (1000 * 60 * 60 * 24)),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}
我不知道为什么,但当我尝试打电话时
this.$refs.timeline.on('rangechange', function (start, end, byUser, event) {
console.log('timechanged...')
})
我每次都收到这个错误 Error: Invalid start "NaN"
。
我在 google 上搜索了解决方案,但一无所获。
时间轴的选项如下:
timeline: {
stack: true,
start: new Date(),
end: new Date(1000 * 60 * 60 * 24 + (new Date()).valueOf()),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}
我已经登录 vis.js
脚本发生了什么。它开始记录开始和结束日期,然后抛出 error NaN
.
这是我遇到错误的 vis.js
脚本代码。
console.log('START', start)
console.log('END', end)
var newStart = start != null ? util.convert(start, 'Date').valueOf() : this.start,
newEnd = end != null ? util.convert(end, 'Date').valueOf() : this.end,
max = this.options.max != null ? util.convert(this.options.max, 'Date').valueOf() : null,
min = this.options.min != null ? util.convert(this.options.min, 'Date').valueOf() : null,
diff;
// check for valid number
if (isNaN(newStart) || newStart === null) {
throw new Error('Invalid start "' + start + '"');
}
if (isNaN(newEnd) || newEnd === null) {
throw new Error('Invalid end "' + end + '"');
}
有谁知道如何解决这个问题?谢谢。
这是因为 new Date()
创建了一个对象,而不是一个数字,并且您的函数期望日期是一个数字。因此 NaN
= 不是数字。
[编辑] 将您的测试逻辑更改为:
console.log('START');
console.dir(start);
console.log('END');
console.dir(end);
var newStart = !isNaN(start) ? util.convert(start, 'Date').valueOf()
: this.start
,newEnd = !isNaN(end) ? util.convert(end, 'Date').valueOf()
: this.end
,max = this.options.max != null ? util.convert(this.options.max, 'Date').valueOf() : null
,min = this.options.min != null ? util.convert(this.options.min, 'Date').valueOf() : null
,diff;
//check for valid number
if ( isNaN(newStart) ) {
throw new Error('Invalid start "' + start + '"');
}
if ( isNaN(newEnd) ) {
throw new Error('Invalid end "' + end + '"');
}
尝试使用 Date.now() - 这 returns 自 1970 年 1 月 1 日以来的毫秒数。
类似于:
timeline: {
stack: true,
start: Date.now(),
end: Date.now() + (1000 * 60 * 60 * 24),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}
如果start
| end
应该是 Date 对象(不是数字)你可以这样做:
timeline: {
stack: true,
start: new Date(),
end: new Date(Date.now() + (1000 * 60 * 60 * 24)),
min: new Date(2018, 0, 1),
max: new Date(2019, 0, 1),
zoomMin: 1000 * 27 * 24 * 24, // if you want to zoom more in then lower the 27
zoomMax: 1000 * 60 * 60 * 24 * 31 * 3,
orientation: 'top'
}