gpt4 book ai didi

crossfilter - 有没有办法附加回调,每当交叉过滤器维度过滤器发生变化时会触发什么?

转载 作者:行者123 更新时间:2023-12-04 18:07:51 27 4
gpt4 key购买 nike

我有几个用 dc.js 构建的图表。我可以通过将回调附加到每个 dc.js 图表的 .on("filterted", function(chart) {}) 来实现所需的功能,但这很烦人,因为我必须将相同的回调附加到每个图表。并且容易出错,因为随着新图表的添加,有人必须记住附加一个事件处理程序。我宁愿只将回调附加到底层交叉过滤器。那可能吗?

有没有办法优化这个...

var ndx = crossfilter(data);
var dimAlpha = ndx.dimension(function(d) {return d.alpha});
var dimBeta = ndx.dimension(function(d) {return d.beta});
var groupAlpha = dimAlpha.group().reduceSum(function(d) {return 1;});
var groupBeta = dimBeta.group().reduceSum(function(d) {return 1;});

dc.pieChart(myDomId1)
.dimension(dimAlpha)
.group(groupAlpha)
.on("filtered", function(chart) {
//do stuff
});

dc.pieChart(myDomId2)
.dimension(dimBeta)
.group(groupBeta)
.on("filtered", function(chart) {
//do stuff
});

变成这样的……
var ndx = crossfilter(data);
var dimAlpha = ndx.dimension(function(d) {return d.alpha});
var dimBeta = ndx.dimension(function(d) {return d.beta});
var groupAlpha = dimAlpha.group().reduceSum(function(d) {return 1;});
var groupBeta = dimBeta.group().reduceSum(function(d) {return 1;});

dc.pieChart(myDomId1)
.dimension(dimAlpha)
.group(groupAlpha);

dc.pieChart(myDomId2)
.dimension(dimBeta)
.group(groupBeta);

ndx.on("filtered", function() {
//do stuff
})

最佳答案

如果您有一百万个图表并且不想手动将事件监听器附加到每个图表,您可以遍历图表注册表并以这种方式添加它们。前任:

dc.chartRegistry.list().forEach(function(chart) {
chart.on('filtered', function() {
// your event listener code goes here.
});
});

请注意,此代码必须在图表实例化后才能运行。

关于crossfilter - 有没有办法附加回调,每当交叉过滤器维度过滤器发生变化时会触发什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com