Javascript D3分派传入参数和调用上下文

Javascript D3分派传入参数和调用上下文,javascript,oop,d3.js,prototype,Javascript,Oop,D3.js,Prototype,我知道在D3中,调度可以用于根据需要将事件触发到多个可视化 我还了解,如果我想从对象调用分派并在上下文中传递,我可以使用apply,如图所示 然而,我很难将D3调度的参数与我想要的上下文结合起来 //创建我的调度程序 var probeDispatch=d3.分派(“probeLoad”); var line_count=0; //加载一个包含大量JSON的文件,并每50毫秒发送一个条目 变量行=[[0,1],[1,2],[2,0]; var parse_timer=window.setInt

我知道在D3中,调度可以用于根据需要将事件触发到多个可视化

我还了解,如果我想从对象调用分派并在上下文中传递,我可以使用
apply
,如图所示

然而,我很难将D3调度的参数与我想要的上下文结合起来

//创建我的调度程序
var probeDispatch=d3.分派(“probeLoad”);
var line_count=0;
//加载一个包含大量JSON的文件,并每50毫秒发送一个条目
变量行=[[0,1],[1,2],[2,0];
var parse_timer=window.setInterval(
函数(){
解析_dispatch();
}, 50
);
函数parse_dispatch(){
//发送两个参数与我的调度
probeDispatch.probeLoad(行[行计数][0],行[行计数][1]);
行计数+=1;
如果(行计数>=行长度){
//行计数=0
clearInterval(解析计时器);
}
}
//我的图表对象
var genChart=功能(标签){
this.label=标签;
//假设我在这里的某个地方画了图表
probeDispatch.on(((“probeLoad.+this.label”)、this.probeParse);
//下一行行不通,因为
//console.log in probeLoad仍返回未定义的
probeDispatch.probeLoad.apply(本);
};
genChart.prototype={
probeParse:函数(probeData、simTime){
//如何从调用probeParse的对象获取上下文
//进入probeParse范围?
var self=这个;
控制台日志(self.label);
}
};
新genChart(“裤子”);
新genChart(“衬衫”)
当您在控制台中看到
“pants”
时,它确实正确设置了上下文

但是还有3个未定义的记录,因为您也调用

  // send two arguments with my dispatch
  probeDispatch.probeLoad(lines[line_count][0], lines[line_count][1]);
没有提供上下文

你需要

probeDispatch.probeLoad.apply(instanceOfGenChart, [lines[line_count][0], lines[line_count][1]]);
但要启用该功能,还需要在页面下方移动
parse_dispatch

//创建我的调度程序
var probeDispatch=d3.分派(“probeLoad”);
var line_count=0;
//加载一个包含大量JSON的文件,并每50毫秒发送一个条目
变量行=[[0,1],[1,2],[2,0];
var parse_timer=window.setInterval(
函数(){
解析_dispatch();
}, 50
);
//我的图表对象
var genChart=功能(标签){
this.label=标签;
//假设我在这里的某个地方画了图表
probeDispatch.on(((“probeLoad.+this.label”)、this.probeParse);
//下一行行不通,但我不知道该怎么办
probeDispatch.probeLoad.apply(本);
};
genChart.prototype={
probeParse:函数(probeData、simTime){
//如何从调用probeParse的对象获取上下文
//进入probeParse范围?
var self=这个;
控制台日志(self.label);
}
};
var instanceOfGenChart=新genChart(“裤子”);
函数parse_dispatch(){
//发送两个参数与我的调度
probeDispatch.probeLoad.apply(instanceOfGenChart[lines[lines\u count][0],lines[line\u count][1]];
行计数+=1;
如果(行计数>=行长度){
//行计数=0
clearInterval(解析计时器);
}
}
当您在控制台中看到
“pants”
时,它确实正确设置了上下文

但是还有3个未定义的记录,因为您也调用

  // send two arguments with my dispatch
  probeDispatch.probeLoad(lines[line_count][0], lines[line_count][1]);
没有提供上下文

你需要

probeDispatch.probeLoad.apply(instanceOfGenChart, [lines[line_count][0], lines[line_count][1]]);
但要启用该功能,还需要在页面下方移动
parse_dispatch

//创建我的调度程序
var probeDispatch=d3.分派(“probeLoad”);
var line_count=0;
//加载一个包含大量JSON的文件,并每50毫秒发送一个条目
变量行=[[0,1],[1,2],[2,0];
var parse_timer=window.setInterval(
函数(){
解析_dispatch();
}, 50
);
//我的图表对象
var genChart=功能(标签){
this.label=标签;
//假设我在这里的某个地方画了图表
probeDispatch.on(((“probeLoad.+this.label”)、this.probeParse);
//下一行行不通,但我不知道该怎么办
probeDispatch.probeLoad.apply(本);
};
genChart.prototype={
probeParse:函数(probeData、simTime){
//如何从调用probeParse的对象获取上下文
//进入probeParse范围?
var self=这个;
控制台日志(self.label);
}
};
var instanceOfGenChart=新genChart(“裤子”);
函数parse_dispatch(){
//发送两个参数与我的调度
probeDispatch.probeLoad.apply(instanceOfGenChart[lines[lines\u count][0],lines[line\u count][1]];
行计数+=1;
如果(行计数>=行长度){
//行计数=0
clearInterval(解析计时器);
}
}

因此,为了将上下文引入函数,我必须
绑定()
它,原因我不太清楚

//创建我的调度程序
var probeDispatch=d3.分派(“probeLoad”);
var line_count=0;
//加载一个包含大量JSON的文件,并每50毫秒发送一个条目
变量行=[[0,1],[1,2],[2,0];
var parse_timer=window.setInterval(
函数(){
解析_dispatch();
}, 50
);
函数parse_dispatch(){
//发送两个参数与我的调度
probeDispatch.probeLoad(行[行计数][0],行[行计数][1]);
行计数+=1;
如果(行计数>=行长度){
//行计数=0
clearInterval(解析计时器);
}
}
//我的图表对象
var genChart=功能(标签){
this.label=标签;
//假设我在这里的某个地方画了图表
probeDispatch.on((((“probeLoad.”+this.label),this.probeParse.bind(this));
};
genChart.prototype={
probeParse:函数(probeData、simTime){
//如何从调用probeParse的对象获取上下文
//进入probeParse范围?
var self=这个;
控制台日志(self.label);
}
};
新genChart(“裤子”);
新genChart(“衬衫”)

因此,为了将上下文引入函数,我必须
绑定()
它,原因我不太清楚

//创建我的调度程序
var probeDispatch=d3.分派(“probeLoad”);
var line_count=0;
//装一卷