gpt4 book ai didi

javascript - 当 LineSeries 悬停在上方时获取 QML LineSeries 的名称 - (动态创建的 LineSeries)

转载 作者:行者123 更新时间:2023-12-01 01:08:25 25 4
gpt4 key购买 nike

我试图在鼠标悬停时获取对动态创建的 LineSeries 的引用。创建 LinesSeries 后,我将信号处理程序附加到悬停事件。

问题是:从下面的简化示例中,当我将鼠标悬停在 LineSeries 上时,它会打印出最后添加的 LineSeries 的名称。 When 它应该打印添加的每个 LineSeries 的系列名称。例如,如果使用名称 [“Line A”、“Line B”、“Line C”] 创建了 3 个 LineSeries,则将鼠标悬停在每个 LineSeries 上时,它应该打印每个相应的名称,但对于所有 3 个 LineSeries,它会打印“Line C” LineSeries 悬停事件处理程序。我在做什么错了?

//dataset is a dictionary(QVariant) of items where each item is the name of the line series
for(var name in dataset) {
var series = chart.createSeries(ChartView.SeriesTypeLine, name, xAxis, yAxis);
series.name = name;

series.hovered.connect(
function (point,state){
if (state){
console.log(">>>"+ name); // <- should print the name of each series
}

});

我有一种感觉,它与将 name 变量的当前值绑定(bind)到 onhovered 事件处理程序有关,但我不确定如何执行此操作。我知道在常规 JS 中他们会做类似的事情

functionName.bind( { ... 代码 ... }, this );

感谢您的帮助。

--E

最佳答案

name 包含迭代完成时数组的最后一个值,因此连接处理程序始终会采用该值。为了避免这种行为,您应该使用闭包,如下所示:

    Component.onCompleted: {
var dataset = ["aaa","bbb","ccc"];

for(var name in dataset) {
var series = chart.createSeries(ChartView.SeriesTypeLine, dataset[name], xAxis, yAxis);

(function(series){
series.name = dataset[name];
series.hovered.connect(function (point, state)
{
if (state)
{
console.log(series.name);
}
});
})(series);

}
}

关于javascript - 当 LineSeries 悬停在上方时获取 QML LineSeries 的名称 - (动态创建的 LineSeries),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386180/

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