Angular.js directive to Knob component powered by d3.js (without jQuery)

Download View on GitHub


with different options

Skin Tron + scale {{value}}

With subtext, unit and read only {{value}}

Bar cap and display previous value{{value}}

Default Knob {{value}}

Skin Tron {{value}}

Lines scale and step {{value}}

Min, max value {{value}}

Angles {{value}}

Dots scale + Dynamic options{{value}}

Animate and disabled input {{value}}

Background color {{value}}

Angles + Tron + Scale {{value}}



Browser Support

Get started


You can also use bower to install the component:
$ bower install ng-knob --save


<body ng-app="KnobDemoApp">
  <div ng-controller="knobCtrl">
    <ui-knob value="value" options="options"></ui-knob>

<script src=""></script>
<script src=""></script>
<script src="bower_components/ng-knob/dist/ng-knob.min.js"></script>
var app = angular.module('KnobDemoApp', ['ui.knob'])
app.controller('knobCtrl', function ($scope) {
  $scope.value = 65;
  $scope.options = {
    size: 300
    //other options


You can pass these options to the initialize function to set a custom look and feel for the plugin.
Property Type Default Description
skin object { type: 'simple', width: 10, color: 'rgba(255,0,0,.5)', spaceWidth: 5 } Type: simple or tron
animate object { enabled: true, duration: 1000, ease: 'bounce' } Duration in milliseconds, Ease: linear, bounce, sin, cubic, quad, exp, circle
size integer 200 Size of knob in px. It will always be a square.
startAngle integer 0 Start angle in degrees
endAngle integer 360 End angle in degrees
unit string '' Unit values
displayInput boolean true Display input value (true or false)
readOnly boolean false Disabled change value (true or false)
trackWidth integer 50 Width track bar in px
barWidth integer 50 Width bar value in px
trackColor string 'rgba(0,0,0,0)' Color track bar
barColor string 'rgba(255,0,0,.5)' Color bar value
prevBarColor string 'rgba(0,0,0,0)' Color bar previous value
textColor string '#222' Text color
barCap integer 0 Defines how the ending of the bar line looks like in radius
fontSize string 'auto' Font size in px. auto: automatic change
subText object { enabled: false, text: '', color: 'gray', font: 'auto' } Subtext options
bgColor string '' Background color
scale object { enabled: false, type: 'lines', color: 'gray', width: 4, quantity: 20, height: 10, spaceWidth: 15 } Scale options, type: lines or dots
step integer 1 Step change, min 0.1
displayPrevious boolean false Display previous value (true or false)
min integer 0 Min value (start value), only integer
max integer 100 Max value (end value), only integer
dynamicOptions boolean false Dynamic change options (true or false)


  1. Fork the repo
  2. Install dependencies: npm install and bower install
  3. Run: grunt
  4. Make your changes
  5. Submit pull request