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