diff options
| author | Igor Minar | 2010-11-25 09:50:07 -0800 | 
|---|---|---|
| committer | Igor Minar | 2010-11-25 09:50:07 -0800 | 
| commit | aa21c521ebf71850f5c3196b5697d371e4096a3e (patch) | |
| tree | 6010385eed63de12d3a05c6548340ce148046726 /src/services.js | |
| parent | bd14a90610fa90802c7f61310fa8f18d4d868de0 (diff) | |
| download | angular.js-aa21c521ebf71850f5c3196b5697d371e4096a3e.tar.bz2 | |
more docs for angular.service.
Diffstat (limited to 'src/services.js')
| -rw-r--r-- | src/services.js | 87 | 
1 files changed, 84 insertions, 3 deletions
diff --git a/src/services.js b/src/services.js index d4f9ff63..91932b44 100644 --- a/src/services.js +++ b/src/services.js @@ -855,19 +855,100 @@ angularServiceInject('$xhr.cache', function($xhr){    return cache;  }, ['$xhr.bulk']); +  /**   * @workInProgress   * @ngdoc service   * @name angular.service.$resource   * @requires $xhr - *  + *   * @description   * Is a factory which creates a resource object which lets you interact with    * <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">RESTful</a>   * server-side data sources.   * Resource object has action methods which provide high-level behaviors without - * the need to interact with the low level $xhr or XMLHttpRequest().  - *  + * the need to interact with the low level $xhr or XMLHttpRequest(). + * + * <pre> +     // Define CreditCard class +     var CreditCard = $resource('/user/:userId/card/:cardId', +      {userId:123, cardId:'@id'}, { +       charge: {method:'POST', params:{charge:true}} +      }); + +     // We can retrieve a collection from the server +     var cards = CreditCard.query(); +     // GET: /user/123/card +     // server returns: [ {id:456, number:'1234', name:'Smith'} ]; + +     var card = cards[0]; +     // each item is an instance of CreditCard +     expect(card instanceof CreditCard).toEqual(true); +     card.name = "J. Smith"; +     // non GET methods are mapped onto the instances +     card.$save(); +     // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} +     // server returns: {id:456, number:'1234', name: 'J. Smith'}; + +     // our custom method is mapped as well. +     card.$charge({amount:9.99}); +     // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} +     // server returns: {id:456, number:'1234', name: 'J. Smith'}; + +     // we can create an instance as well +     var newCard = new CreditCard({number:'0123'}); +     newCard.name = "Mike Smith"; +     newCard.$save(); +     // POST: /user/123/card {number:'0123', name:'Mike Smith'} +     // server returns: {id:789, number:'01234', name: 'Mike Smith'}; +     expect(newCard.id).toEqual(789); + * </pre> + * + * + * @param {string} url A parameterized URL template with parameters prefixed by `:` as in + *     `/user/:username`. + * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in + *     `actions` methods. + * @param {Object.<Object>=} actions Map of actions available for the resource. + * + *     Each resource comes preconfigured with `get`, `save`, `query`, `remove`, and `delete` to + *     mimic the RESTful philosophy. + * + *     To create your own actions, pass in a map keyed on action names (e.g. `'charge'`) with + *     elements consisting of these properties: + * + *     - `{string} method`:  Request method type. Valid methods are: `GET`, `POST`, `PUT`, `DELETE`, + *        and [`JSON`](http://en.wikipedia.org/wiki/JSON#JSONP) (also known as JSONP). + *     - `{Object=} params`: Set of pre-bound parameters for the action. + *     - `{boolean=} isArray`: If true then the returned object for this action is an array, see the + *       pre-binding section. + *     - `{boolean=} verifyCache`: If true then items returned from cache, are double checked by + *       running the query again and updating the resource asynchroniously. + * + *     Each service comes preconfigured with the following overridable actions: + *     <pre> + *       { 'get':    {method:'GET'}, +           'save':   {method:'POST'}, +           'query':  {method:'GET', isArray:true}, +           'remove': {method:'DELETE'}, +           'delete': {method:'DELETE'} }; + *     </pre> + * + * @returns {Object} A resource "class" which has "static" method for each action in the definition. + *     Calling these methods invoke `$xhr` on the `url` template with the given `method` and + *     `params`. When the data is returned from the server then the object is an instance of the + *     resource type and all of the non-GET methods are available with `$` prefix. This allows you + *     to easily support CRUD operations (create, read, update, delete) on server-side data. + +       <pre> +         var User = $resource('/user/:userId', {userId:'@id'}); +         var user = User.get({userId:123}, function(){ +           user.abc = true; +           user.$save(); +         }); +       </pre> + * + *   * @example     <script>       function BuzzController($resource) {  | 
