AngularJS-Slider in AngularUI Tabs

Yes it is possible!

by ValentinH

HTML

<link rel="stylesheet" href="https://rawgit.com/rzajac/angularjs-slider/master/dist/rzslider.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.4/ui-bootstrap-tpls.min.js"></script>
<script src="https://rawgit.com/angular-slider/angularjs-slider/master/dist/rzslider.js"></script>
<div ng-app="myapp">
    <div ng-controller="TestController as vm">
        <p>Price 1: {{vm.priceSlider1.value}}</p>
        <p>Price 2: {{vm.priceSlider2.value}}</p>
        <tabset>
            <tab heading="Slider 1" select="vm.refreshSlider()">
                <rzslider rz-slider-model="vm.priceSlider1.value" rz-slider-options="vm.priceSlider1.options" ></rzslider>
            </tab>
            <tab heading="Slider 2" select="vm.refreshSlider()">
                <rzslider rz-slider-model="vm.priceSlider2.value" rz-slider-options="vm.priceSlider2.options"></rzslider>
            </tab>
        </tabset>
    </div>
</div>

JavaScript

var myApp = angular.module('myapp', ['rzSlider', 'ui.bootstrap']);

myApp.controller('TestController', TestController);

function TestController($scope, $timeout) {
    var vm = this;

    vm.priceSlider1 = {
        value: 100,
      options: {
        floor: 0,
        ceil: 500
      }
    };

    vm.priceSlider2 = {
        value: 200,
      options: {
        floor: 0,
        ceil: 500
      }
    };

    vm.refreshSlider = function () {
        $timeout(function () {
            $scope.$broadcast('rzSliderForceRender');
        });
    };
}