我目前正在创建一个带有.call()的D3JS链。这是我目前的链
foo.selectAll('svg')
.data(data)
.enter()
.append('svg')
.classed('someclass', true)
.call(someFunc);
当它到达.call()时,它进入D3JS函数
d3_selectionPrototype.call = function(callback) {
var args = d3_array(arguments);
callback.apply(args[0] = this, args);
return this;
};
this
不包含任何内容,只有message: Cannot read property length of undefined
才会返回。不幸的是,这种情况偶尔会发生。任何人都知道为什么或如何发生这种情况?
修改
我正在使用一个实现视图合成的javascript框架。当首次调用驱动视图的模型时,将进行当前的D3JS调用。
答案 0 :(得分:0)
我自己解决了这个问题,并将继续帮助那些可能在将来遇到同样问题的人。我在问题中添加了 EDIT ,这样就有助于为完整问题提供更多背景信息。
解决方案是,由于在驱动视图的模型最初设置时我的D3JS链被调用,所以在DOM中没有任何东西可以选择D3。一旦DOM被渲染并且一切都能够顺利运行,我就移动了要调用的链。