Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / Memory.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-data-proxy-Memory'>/**
19 </span> * @author Ed Spencer
20  *
21  * In-memory proxy. This proxy simply uses a local variable for data storage/retrieval, so its contents are lost on
22  * every page refresh.
23  *
24  * Usually this Proxy isn't used directly, serving instead as a helper to a {@link Ext.data.Store Store} where a reader
25  * is required to load data. For example, say we have a Store for a User model and have some inline data we want to
26  * load, but this data isn't in quite the right format: we can use a MemoryProxy with a JsonReader to read it into our
27  * Store:
28  *
29  *     //this is the model we will be using in the store
30  *     Ext.define('User', {
31  *         extend: 'Ext.data.Model',
32  *         fields: [
33  *             {name: 'id',    type: 'int'},
34  *             {name: 'name',  type: 'string'},
35  *             {name: 'phone', type: 'string', mapping: 'phoneNumber'}
36  *         ]
37  *     });
38  *
39  *     //this data does not line up to our model fields - the phone field is called phoneNumber
40  *     var data = {
41  *         users: [
42  *             {
43  *                 id: 1,
44  *                 name: 'Ed Spencer',
45  *                 phoneNumber: '555 1234'
46  *             },
47  *             {
48  *                 id: 2,
49  *                 name: 'Abe Elias',
50  *                 phoneNumber: '666 1234'
51  *             }
52  *         ]
53  *     };
54  *
55  *     //note how we set the 'root' in the reader to match the data structure above
56  *     var store = Ext.create('Ext.data.Store', {
57  *         autoLoad: true,
58  *         model: 'User',
59  *         data : data,
60  *         proxy: {
61  *             type: 'memory',
62  *             reader: {
63  *                 type: 'json',
64  *                 root: 'users'
65  *             }
66  *         }
67  *     });
68  */
69 Ext.define('Ext.data.proxy.Memory', {
70     extend: 'Ext.data.proxy.Client',
71     alias: 'proxy.memory',
72     alternateClassName: 'Ext.data.MemoryProxy',
73
74 <span id='Ext-data-proxy-Memory-cfg-data'>    /**
75 </span>     * @cfg {Ext.data.Model[]} data
76      * Optional array of Records to load into the Proxy
77      */
78
79     constructor: function(config) {
80         this.callParent([config]);
81
82         //ensures that the reader has been instantiated properly
83         this.setReader(this.reader);
84     },
85
86 <span id='Ext-data-proxy-Memory-method-read'>    /**
87 </span>     * Reads data from the configured {@link #data} object. Uses the Proxy's {@link #reader}, if present.
88      * @param {Ext.data.Operation} operation The read Operation
89      * @param {Function} callback The callback to call when reading has completed
90      * @param {Object} scope The scope to call the callback function in
91      */
92     read: function(operation, callback, scope) {
93         var me     = this,
94             reader = me.getReader(),
95             result = reader.read(me.data);
96
97         Ext.apply(operation, {
98             resultSet: result
99         });
100
101         operation.setCompleted();
102         operation.setSuccessful();
103         Ext.callback(callback, scope || me, [operation]);
104     },
105
106     clear: Ext.emptyFn
107 });
108 </pre>
109 </body>
110 </html>