Vis.js Timeline的onMoving回调报错问题求助
解决Vis.js Timeline onMoving事件报错的问题
我一眼就揪出问题所在了——你的onMoving回调函数漏了调用传入的callback参数!Vis.js的onMoving事件是异步回调模式,必须通过这个callback来告知Timeline是否允许当前的移动操作,或是返回调整后的位置,不然就会触发你看到的这个错误。
正确的实现方式
你只需要在函数里补上callback()的调用即可:如果要允许移动直接传true,如果需要调整移动后的位置,可以传入修改后的item对象,示例如下:
options.onMoving = function (item, callback) { console.log('onMoving'); // 允许当前移动操作,直接传true callback(true); // 若要调整移动后的位置,可修改item后传入 // item.start = new Date(调整后的时间戳); // callback(item); };
为什么snap可以正常运行?
这是因为snap是一个同步函数,它只需要直接返回计算后的日期值就行,不需要异步回调。而onMoving被设计成异步模式,是为了支持需要异步判断的场景(比如请求后端接口验证移动权限),所以必须严格遵循“调用callback”的规则。
额外提示
如果想阻止当前的移动操作,只需要调用callback(false),Timeline就会取消这次移动动作。
内容的提问来源于stack exchange,提问作者Knarf
相关产品推荐
相关产品推荐

