D3.js and AngularJS directives
AngularJs + d3Js + bar chart example usign directives
HTML
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<div ng-app="myApp" ng-controller="Ctrl">
<bars-chart chart-data="myData" ></bars-chart>
</div>
CSS
.chart {
background: #eee;
padding: 3px;
}
.chart div {
width: 0;
transition: all 1s ease-out;
-moz-transition: all 1s ease-out;
-webkit-transition: all 1s ease-out;
}
.chart div {
font: 10px sans-serif;
background-color: steelblue;
text-align: right;
padding: 3px;
margin: 5px;
color: white;
box-shadow: 2px 2px 2px #666;
}
JavaScript
angular.module('myApp', []).
directive('barsChart', function ($parse) {
var directiveDefinitionObject = {
restrict: 'E',
replace: false,
scope: {data: '= chartData'},
link: function (scope, element, attrs) {
var chart = d3.select(element[0]);
chart.append("div").attr("class", "chart")
.selectAll('div')
.data(scope.data).enter().append("div")
.transition().ease("elastic")
.style("width", function(d) { return d + "%"; })
.text(function(d) { return d + "%"; });
}
};
return directiveDefinitionObject;
});
function Ctrl($scope) {
$scope.myData = [10,20,30,40,60];
}