D3.js d3-更新数据不会导致刷新
我正在尝试编写一个简单的d3js应用程序,它将显示一个对象文本数组中的图形。此文本将从后端定期更新。但是为了简单起见,我使用setInterval重写了它,它应该会更新内容D3.js d3-更新数据不会导致刷新,d3.js,D3.js,我正在尝试编写一个简单的d3js应用程序,它将显示一个对象文本数组中的图形。此文本将从后端定期更新。但是为了简单起见,我使用setInterval重写了它,它应该会更新内容 <!doctype html> <html> <head> <script src="d3.js" type="text/javascript"></script> <script src="underscore.js" type="text/
<!doctype html>
<html>
<head>
<script src="d3.js" type="text/javascript"></script>
<script src="underscore.js" type="text/javascript"></script>
</head>
<body>
<div id="graph">
</div>
<script type="text/javascript">
var data=[
{ name: 'NONE', distribution: 5}
];
var graphElement = d3.select("#graph");
// set initial data
graphElement.selectAll("p")
.data(data, function(d){return d.name} )
.enter()
.append("p")
.text(function(d){return d.name + d.distribution;});
var redraw= function() {
console.dir(data);
graphElement.selectAll("p")
.data(data, function(d){return d.name})
.enter()
.append("p")
.text(function(d){return d.name + d.distribution;});
};
setInterval(function() {
var advice = _.find(data, function(i){return i.name == 'ADVICE'});
if (!advice){
advice = {name: 'ADVICE', distribution: 0};
data.push(advice);
}
advice.distribution = advice.distribution + 1;
redraw();
}, 3000);
</script>
</body>
</html>
页面最初将按预期显示一个段落。然后setInterval开始,并插入一个值为1的“ADVICE”方法。同样,正如所料。
但是,当随后的setInterval启动时,“ADVICE”节点不会更新,即它将保持为“ADVICE1”
我错过了什么明显的东西吗
谢谢你的帮助
问候,
Alex这里有几点需要注意: 1未正确处理输入/更新选择 2您的建议。分配没有从1更改 刷新通知字符串
var ge = graphElement.selectAll("p")
.data(data, function(d){return d.name});
ge.exit().remove();
ge.enter().append("p");
ge.text(function(d){return d.name + d.distribution;});
你好谢谢你的回复。我可能误解了函数参数对数据方法的作用。我认为应该返回数据的“标识符”,就像db中的主键一样。在本例中,我的标识符实际上是“name”字段。i、 e.建议/无。所以我不知道你为什么在那里使用“分发”。其次,我不希望“建议”出现多次。它应该只显示一次,并以递增的“distribution”显示。为了更正,我更新了小提琴以刷新通知字符串。再次表示歉意,太棒了!非常感谢你!