I think you can achieve this using 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 your 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;
}
/*.my-form {
transition:0.5s linear all;
padding: 16px;
border-radius: 4px;
background: #ffffea;
}*/
.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 this?.
Please have a look at this plunker