I think you can achieve this using the ng class.
Try this, in HTML,
<html data-ng-app="myApp"> <head> <link data-require=" bootstrap-css@ *" data-semver="3.1.1" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" /> <script data-require=" angular.js@ *" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular.js"></script> <script data-require=" angular-animate@ *" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular-animate.js"></script> <link rel="stylesheet" href="style.css" /> <script src="script.js"></script> </head> <body data-ng-controller="MainCtrl"> <div class="container"> <div class="col-sm-12 col-md-6 col-md-offset-3"> <form name="myForm" ng-class="formClass"> <div class="form-group"> <label>Name</label> <input type="text" name="name" data-ng-model="user.name" class="form-control" required="" /> </div> <div class="form-group"> <label>Country</label> <input type="text" name="country" data-ng-model="user.country" class="form-control" required="" /> </div> <div class="form-group"> <label>Items</label> <br /> <button type="button" class="btn btn-primary" data-ng-click="addItem()">Add</button> <p data-ng-show="items.length < min">I need at least {{min}} items ! (so {{min - items.length}} more would be good)</p> <div data-ng-repeat="item in items"> <button type="button" class="btn btn-danger" data-ng-click="removeItem($index)">Delete</button> <span>{{item}}</span> </div> </div> </form> </div> </div> </body> </html>
In script.js,
angular.module('myApp', ['ngAnimate']); angular.module('myApp') .controller('MainCtrl', ['$scope', function ($scope) { $scope.items = []; $scope.min = 5; var _counter = 0; $scope.formClass="invalid"; $scope.addItem = function () { $scope.items.push('item' + _counter); _counter++; $scope.isFormValid(); }; $scope.isFormValid=function(){ if ($scope.items.length < 5) { $scope.formClass="invalid"; } else if ($scope.items.length >=5){ $scope.formClass="valid"; } } $scope.removeItem = function (index) { $scope.items.splice(index, 1); $scope.isFormValid(); }; }]);
In css file
body { padding: 16px; background: #555555; } .invalid { transition:0.5s linear all; padding: 16px; border-radius: 4px; background: #ffffea; background: #ffeaea; } .valid { transition:0.5s linear all; padding: 16px; border-radius: 4px; background: #ffffea; background: #eaffea; }
Do you want something like that?
Please see plunker
source share