i coded following in form:
<td><input type="text" ng-model="row.title" /></td>
when @ dom chrome developer tools see following:
<input type="text" ng-model="row.title" class="ng-pristine ng-valid">
how can make when there change made input input has class added it?
there 2 ways approach problem:
1. use built-in ng-dirty
class angular puts on element.
when change input managed angular, adds css classes input various states. these include:
ng-pristine
- input has not been modifiedng-dirty
- input has been modified
so, if can modify css based off .ng-dirty
class, you're go.
2. use form
directive $dirty
flag.
when use form
element, angular assigns formcontroller
instance on scope same name name
attribute on form; each input inside form gets attached formcontroller instance property, again same name name
attribute on input. example,
<form name="myform"> <input type="text" name="myinput"> </form>
gives you
$scope.myform.myinput
each input property has of own properties on it, including $pristine
, $dirty
; these work css classes listed above. thus, can check $dirty
flag on input , use ng-class
conditionally apply class element. example:
<div ng-controller="maincontroller"> <form name="myform"> <input name="myinput" ng-model="model" ng-maxlength="3" ng-class="{changed: myform.myinput.$dirty}"> </form> </div>
you can find working example here: http://jsfiddle.net/binarymuse/bdb5b/
Comments
Post a Comment