AddresBook example modified to use $resource
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 1 Nov 2010 13:13:37 +0000 (14:13 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 1 Nov 2010 13:13:37 +0000 (14:13 +0100)
templates/conference/User.html.ep [new file with mode: 0644]

diff --git a/templates/conference/User.html.ep b/templates/conference/User.html.ep
new file mode 100644 (file)
index 0000000..e956d4b
--- /dev/null
@@ -0,0 +1,65 @@
+<script>
+angular.service('conference', function($resource){
+ this.User = $resource( '/data/conference/User/' );
+}, {$inject:['$resource'],$creation:'eager'});
+
+function UserForm(){
+  this.master = {
+    name: 'John Smith', 
+    address:{
+      line1: '123 Main St.', 
+      city:'Anytown', 
+      state:'AA', 
+      zip:'12345'
+    }, 
+    contacts:[
+      {type:'phone', value:'1(234) 555-1212'}
+    ]
+  };
+  this.cancel();
+}
+
+UserForm.prototype = {
+  cancel: function(){
+    this.form = angular.copy(this.master);
+  },
+
+  save: function(){
+       this.saved = new this.User( this.form );
+       this.saved.$save();
+       console.debug( 'saved', this.saved );
+    this.form = this.saved;
+  }
+};
+</script>
+<div ng:controller="UserForm">
+
+  <label>Name:</label><br/>
+  <input type="text" name="form.name" ng:required/> <br/><br/>
+
+  <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/>
+
+  <label>Phone:</label>
+  [ <a href="" ng:click="form.contacts.$add()">add</a> ]
+  <div ng:repeat="contact in form.contacts">
+    <select name="contact.type">
+      <option>email</option>
+      <option>phone</option>
+      <option>pager</option>
+      <option>IM</option>
+    </select>
+    <input type="text" name="contact.value" ng:required/> 
+     [ <a href="" ng:click="form.contacts.$remove(contact)">X</a> ]
+  </div>
+<button ng:click="cancel()" disabled="{{master.$equals(form)}}">Cancel</button>
+<button ng:click="save()" disabled="{{$invalidWidgets.visible() || master.$equals(form)}}">Save</button>
+
+<hr/>
+Debug View:
+<pre>form={{form}}
+master={{master}}</pre>
+</div>