Reputation: 1949
I want to have a slider that that controls the height and width of several divs, however, I can't seem to get them to bind correctly.
<div ng-controller="SizeCtrl">
<input type="range" min="100" max="200" ng-model="sliderval" />
<div class="box" ng-style="height:sliderval; width:sliderval"> Box 1</div>
<div class="box" ng-style="height:sliderval; width:sliderval"> Box 2</div>
<div class="box" ng-style="height:sliderval; width:sliderval"> Box 3</div>
<div class="box" ng-style="height:sliderval; width:sliderval"> Box 4</div>
<div class="box" ng-style="height:sliderval; width:sliderval"> Box 5</div>
</div>
https://jsfiddle.net/nopctoday/dnvwbywv/3/
Upvotes: 1
Views: 209
Reputation: 12447
You can also use ng-style
like in this fiddle.
HTML:
<div ng-app="myApp">
<div ng-controller="SizeCtrl">
<input type="range" min="100" max="200" ng-model="sliderval" />
<div class="box" ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"> Box 1</div>
<div class="box" ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"> Box 2</div>
<div class="box" ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"> Box 3</div>
<div class="box" ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"> Box 4</div>
<div class="box" ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"> Box 5</div>
</div>
</div>
The changes here were:
<div ng-app="myApp">
ng-style
to ng-style="{'height':sliderval+'px', 'width':sliderval+'px'}"
JavaScript:
var myApp = angular.module('myApp', []);
myApp.controller('SizeCtrl', function ($scope, $element) {
$scope.sliderval = 100;
});
The changes here were:
sliderval
variableonLoad
to No wrap - in <head>
Upvotes: 0
Reputation: 39287
You can use ng-style
like this:
var myApp = angular.module('myApp', []);
myApp.controller('SizeCtrl', function($scope) {
$scope.$watch('sliderval', function() {
$scope.myStyle.height = $scope.sliderval + 'px',
$scope.myStyle.width = $scope.sliderval + 'px'
});
$scope.sliderval = 100;
$scope.myStyle = {};
});
.box {
height: 100px;
width: 100px;
border: red 2px solid;
margin: 1em;
display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app="myApp" ng-controller="SizeCtrl">
<input type="range" min="100" max="200" ng-model="sliderval" />{{sliderval}}
<div class="box" ng-style="myStyle">Box 1</div>
<div class="box" ng-style="myStyle">Box 2</div>
<div class="box" ng-style="myStyle">Box 3</div>
<div class="box" ng-style="myStyle">Box 4</div>
<div class="box" ng-style="myStyle">Box 5</div>
</div>
Upvotes: 0
Reputation: 4020
Try my fix: https://jsfiddle.net/dnvwbywv/4/
I had to add ng-app to your code, also changed the way style is being bound.
<div class="box" style="height:{{sliderval}}px; width:{{sliderval}}px"> Box 1</div>
Upvotes: 3