Javascript 使用d3pie.js piechart更新数据时出错

Javascript 使用d3pie.js piechart更新数据时出错,javascript,d3.js,d3pie.js,Javascript,D3.js,D3pie.js,我正在尝试更新d3pie.js库中的piechart,但是我肯定缺少一些基本的东西 我有两个脚本,在我看来是一样的,唯一的区别是更新是通过按下按钮进行的,而在另一个脚本中,更新是在页面加载时进行的。第二个脚本uncaughttypeerror:cannotreadproperty'value'of undefined也有一个错误。我确实得到了一张图表,它只是一张错误的图表;而不是2片,得到3片(2片颜色相同)。pullOutSegment事件也不起作用,所以piechart确实有问题。pie对象

我正在尝试更新d3pie.js库中的piechart,但是我肯定缺少一些基本的东西

我有两个脚本,在我看来是一样的,唯一的区别是更新是通过按下按钮进行的,而在另一个脚本中,更新是在页面加载时进行的。第二个脚本
uncaughttypeerror:cannotreadproperty'value'of undefined
也有一个错误。我确实得到了一张图表,它只是一张错误的图表;而不是2片,得到3片(2片颜色相同)。
pullOutSegment
事件也不起作用,所以piechart确实有问题。
pie
对象看起来不一样,也许这就是第二个脚本失败的原因,但我不知道如何得到正确的脚本。它从昨天起就一直在折磨我。下面是脚本,第一个是工作代码,第二个是失败代码

非常感谢您的帮助


函数piechartData(){
风险值数据=[
{标签:“1”,值:1},
{标签:“2”,值:4},
{标签:“3”,值:3}
];
var pie=新的d3pie(“pie”{
数据:{
内容:数据
}
});
回赠馅饼
};
//创建一个图表
pie=piechartData();
$(函数(){
//清除数据
数据=[];
$(“#添加数据”)。在(“单击”,函数()上){
//按下按钮后,按下这些按钮并更新图表
数据推送({“标签”:“4”,“值”:8});
数据推送({“标签”:“51”,“值”:3});;
pie.updateProp(“data.content”,data);
});
});

第二个示例清除svg的内容(
updateProp
),但不是所有转换。他们仍然住在d3里面

如果等待初始动画完成

setTimeout(() => {
    data = [];
    data.push({"label": "4", "value": 8});
    data.push({"label": "51", "value": 3});

    pie.updateProp("data.content", data);
}, 5000);
一切正常


我不知道当d3pie完成所有动画时,是否有一种简单的方法可以获得回调。

是的!你是对的。这就是问题所在。我还认为,如果将updateProp调用放在文档就绪语句中,比如$(function(){pie.updateProp(“data.content”,data);});然后它似乎起作用了。显然,图表必须在开始操作之前完成。我不清楚。但我仍在努力,看看我能如何使用它。非常感谢@Aenaon:向
piechartData
添加一个参数,并将该参数用于数据,而不是在函数中定义数据,或者如果定义了参数,则将数据替换为参数。