2016-04-05 10 views
1

非常に単純な<ul>リストを作成したいと思います。これまでd3オブジェクトの配列を含む入力/終了パターン

[0 => {title: "title one"}, 1=> {title: "title two"}]

マイコード:

データは、の形でオブジェクトの配列である

var titles = _.findWhere(scope.titles, {key: d.key}).values; 
var li = d3.select('.overview-popup ul').selectAll('li') 
    .data(titles); 

li.enter() 
    .append('li') 
    .text(function(n){ return n.title }); 

li.exit().remove(); 

この結果は、私は、予測するようではないですli要素は、新しいデータ配列が入力されるたびにcleanedになります。いくつかのノードを残し、ノードの数に応じて更新します。これはインデックスのためですか?

fiddle here

+0

私の理解から、d3は新しいデータを既存のデータ配列に結合します。私はまだ主要な機能がこれをどのように修正するかについては不明です。私は同じ問題を抱えています。キー機能を使用すると、グラフに何も表示されないので、私が推測する重要な機能をよりよく理解する必要があります。私はこのような配列を使用しています '[{date: 'some date ...'、percent: '2.89'}] '日付は特定の範囲の新しい配列と一貫していません。私は本当にオブジェクトが順序にある​​ので、デフォルトのインデックスを使用したいと思いますが、私はそれを行い、新しいデータを取得すると、グラフのポイントは更新されません – nf071590

答えて

3

多分これは役立ちます:

をD3.jsでオブジェクトの不変を達成するために、Object Constancy - Key Functions)から

を(selection.dataする2番目の引数としてキー機能を指定しますあなたのケースでは

それは次のようになります。

var li = d3.select('.overview-popup ul') 
      .selectAll('li') 
      .data(titles, function(e) { return e.title }); 
関連する問題