12 {type:'phone', value:'1(234) 555-1212'}
18 UserForm.prototype = {
20 this.form = angular.copy(this.master);
24 this.master = this.form;
26 alert('SAVED: ' + angular.toJson(this.master));
30 <div ng:controller="UserForm">
32 <label>Name:</label><br/>
33 <input type="text" name="form.name" ng:required/> <br/><br/>
35 <label>Address:</label><br/>
36 <input type="text" name="form.address.line1" size="33" ng:required/> <br/>
37 <input type="text" name="form.address.city" size="12" ng:required/>,
38 <input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:/^\w\w$/"/>
39 <input type="text" name="form.address.zip" size="5" ng:required ng:validate="regexp:/^\d\d\d\d\d$/"/><br/><br/>
42 [ <a href="" ng:click="form.contacts.$add()">add</a> ]
43 <div ng:repeat="contact in form.contacts">
44 <select name="contact.type">
45 <option>email</option>
46 <option>phone</option>
47 <option>pager</option>
50 <input type="text" name="contact.value" ng:required/>
51 [ <a href="" ng:click="form.contacts.$remove(contact)">X</a> ]
53 <button ng:click="cancel()" disabled="{{master.$equals(form)}}">Cancel</button>
54 <button ng:click="save()" disabled="{{$invalidWidgets.visible() || master.$equals(form)}}">Save</button>
59 master={{master}}</pre>