簡體   English   中英

所有數據都在enter()占位符(D3)中

[英]All data is in enter() placeholder (D3)

我有此代碼的更新功能:

// actualy fetched from server. array of JS objects that I parsed to right type
var xData = [{
    id: 234234 // parsed as integer
    date: 15/11/2001 // parsed as date
    price: 6512 // parsed as integer
}];

// triggred by the user
function updateSVG() {

 // fetch new data from ther server
 xData = [];
 xData = [{
    id: 234234 // parsed as integer
    data: 15/11/2001 // parsed as date
    price: 6512 // parsed as integer
}];

 // join data
 var x = svg.selectAll(".x-class")
     .data(xData, function(d) { return d.id; });

 // new data
 x.enter().append("image")
     .attr('class', 'x-class')
     .attr("xlink:href", "x-image.png")
     .attr("width", 16)
     .attr("height", 19)
     .attr('y', 0);

 // current and new data
 x.transition()
     .attr("x", function(d) { return x(d.date); })
     .attr("y", function(d) { return y(d.date); });

 /// old data
 x.exit().remove();

}

我所期望的是,當我第二次或第三次運行此函數時,大多數數據將是UPDATE(即不在enter中),只有少數數據將在enter()和exit()中。

但是我所有的數據都在enter()中。 無論。 d.id肯定是唯一的。 一切都按預期工作,但此問題。 當我在獲取新數據之前和之后檢查x對象時,我所有的數據都在enter()占位符中。

有任何想法嗎? 我想念什么?

代碼問題(讓我們知道是否有任何幫助):

  1. 什么是x在的情況下, x(d.date) 你是說xData嗎?

    x.attr("x", function(d) { return x(d.date); })

  2. 這是在做什么 您尚未定義datay (或arrayObjectIndexOfyOffset但我懷疑它們是隱含的)

    return y(data[arrayObjectIndexOf(data, d.date, 'date')].price) - yOffset;

另外,由於D3是數據處理庫,因此當我們不知道您的數據是什么樣時,通常很難提供幫助。 有時我們有個主意( d.date ),但在這里可能很重要(因為您顯然是在別處尋找價格,而不是d.price

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM