2016-05-13 13 views
0

私はangularjsの初心者です。誰でも教えてください、再利用可能な指示ですか?はいの場合、どうすれば使用できますか?複数のdivでangularjs棒グラフを再利用する方法

私は1つのバーチャートディレクティブを持っている:

directive('bars1', function ($parse) { 

    return { 
    restrict: 'E', 
    scope: { 
     data: '=', 
     label: '@' 
     }, 
     replace: true, 

    link: function (scope, element, attrs) { 

     var chart = d3.select('#chart') 
     .append("div").attr("class", "chart") 
     .selectAll('div') 
     .data(scope.data).enter() 
     .append("div") 
     .transition().ease("elastic") 
     .style("width", function(d) { return (d/1000)-10 + "%"; }) 
     .text(function(d) { return d ; }); 
    } 
    }; 
    }) 

私はこの

<div id="dashboard1" > 
    <div id="bars" style="margin-top:20%"> 

    <div id="chart"> 
      <bars1 data=val></bars1> 
    </div> 
    </div> 
</div> 

<div id="dashboard2" > 
    <div id="bars" style="margin-top:20%" > 

    <div id="chart"> 
      <bars1 data=val></bars1> 
    </div> 
    </div> 


</div> 

のような2つの異なるdiv要素にディレクティブを使用したいが、それは2つのdivに2つの別々のグラフを作成するが、一つだけを作成していません最初のdivのグラフ。私を助けてください。

+1

d3.select( '#chart')をd3.select(要素[0])に置き換えてください。 – riteshmeher

+0

ありがとうございましたriteshmeher、それは働いた... – yog

+0

あなたを助けてくれてうれしいです。私は答えとしてそれを加えました。あなたはそれをマークすることができます。 – riteshmeher

答えて

1

あなたはd3.select(element[0])d3.select('#chart')を置き換える必要があります。

0

更新しますdirective

directive('bars1', function ($parse) { 

    return { 
    restrict: 'E', 
    scope: { 
     data: '=', 
     label: '@' 
     }, 
     replace: true, 

    link: function (scope, element, attrs) { 

     var chart = d3.select(scope.label)//<--use element id rather than specific 
     .append("div").attr("class", "chart") 
     .selectAll('div') 
     .data(scope.data).enter() 
     .append("div") 
     .transition().ease("elastic") 
     .style("width", function(d) { return (d/1000)-10 + "%"; }) 
     .text(function(d) { return d ; }); 
    } 
    }; 
    }) 

そして、あなたがHTML:

<div id="dashboard1" > 
    <div id="bars" style="margin-top:20%"> 

    <div id="chart1"><!--use different id --> 
      <bars1 data="val" label="#chart1"></bars1> 
    </div> 
    </div> 
</div> 

<div id="dashboard2" > 
    <div id="bars" style="margin-top:20%" > 

    <div id="chart2"><!--use different id --> 
      <bars1 data="val" label="#chart2"></bars1> 
    </div> 
    </div> 


</div> 
+0

それはうまく動いていない...しかし、答えのためにあまりにもありがとう – yog

関連する問題