aboutsummaryrefslogtreecommitdiffstats
path: root/docs/cookbook.formadvanced.ngdoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/cookbook.formadvanced.ngdoc')
-rw-r--r--docs/cookbook.formadvanced.ngdoc39
1 files changed, 29 insertions, 10 deletions
diff --git a/docs/cookbook.formadvanced.ngdoc b/docs/cookbook.formadvanced.ngdoc
index 478358db..e3242bdc 100644
--- a/docs/cookbook.formadvanced.ngdoc
+++ b/docs/cookbook.formadvanced.ngdoc
@@ -3,12 +3,15 @@
@name Cookbook: Advanced Form
@description
-Here we extend the basic form example to include common features such as reverting, dirty state detection, and preventing invalid form submission.
+Here we extend the basic form example to include common features such as reverting, dirty state
+detection, and preventing invalid form submission.
<doc:example>
<doc:source>
<script>
function UserForm(){
+ this.state = /^\w\w$/;
+ this.zip = /^\d\d\d\d\d$/;
this.master = {
name: 'John Smith',
address:{
@@ -32,7 +35,6 @@ Here we extend the basic form example to include common features such as reverti
save: function(){
this.master = this.form;
this.cancel();
- alert('SAVED: ' + angular.toJson(this.master));
}
};
</script>
@@ -44,8 +46,8 @@ Here we extend the basic form example to include common features such as reverti
<label>Address:</label><br/>
<input type="text" name="form.address.line1" size="33" ng:required/> <br/>
<input type="text" name="form.address.city" size="12" ng:required/>,
- <input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:/^\w\w$/"/>
- <input type="text" name="form.address.zip" size="5" ng:required ng:validate="regexp:/^\d\d\d\d\d$/"/><br/><br/>
+ <input type="text" name="form.address.state" size="2" ng:required ng:validate="regexp:state"/>
+ <input type="text" name="form.address.zip" size="5" ng:required ng:validate="regexp:zip"/><br/><br/>
<label>Phone:</label>
[ <a href="" ng:click="form.contacts.$add()">add</a> ]
@@ -69,14 +71,31 @@ Here we extend the basic form example to include common features such as reverti
</div>
</doc:source>
<doc:scenario>
+ it('should enable save button', function(){
+ expect(element(':button:contains(Save)').attr('disabled')).toBeTruthy();
+ input('form.name').enter('change');
+ expect(element(':button:contains(Save)').attr('disabled')).toBeFalsy();
+ element(':button:contains(Save)').click();
+ expect(element(':button:contains(Save)').attr('disabled')).toBeTruthy();
+ });
+ it('should enable cancel button', function(){
+ expect(element(':button:contains(Cancel)').attr('disabled')).toBeTruthy();
+ input('form.name').enter('change');
+ expect(element(':button:contains(Cancel)').attr('disabled')).toBeFalsy();
+ element(':button:contains(Cancel)').click();
+ expect(element(':button:contains(Cancel)').attr('disabled')).toBeTruthy();
+ expect(element(':input[name=form.name]').val()).toEqual('John Smith');
+ });
</doc:scenario>
</doc:example>
-Things to notice
+#Things to notice
-Cancel & save buttons are only enabled if the form is dirty -- there is something to cancel or save.
-Save button is only enabled if there are no validation errors on the form.
-Cancel reverts the form changes back to original state.
-Save updates the internal model of the form.
-Debug view shows the two models. One presented to the user form and the other being the pristine copy master.
+* Cancel & save buttons are only enabled if the form is dirty -- there is something to cancel or
+ save.
+* Save button is only enabled if there are no validation errors on the form.
+* Cancel reverts the form changes back to original state.
+* Save updates the internal model of the form.
+* Debug view shows the two models. One presented to the user form and the other being the pristine
+ copy master.