Upgrade to ExtJS 4.0.1 - Released 05/18/2011
[extjs.git] / docs / source / Array.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-reader-Array-method-constructor'><span id='Ext-data-reader-Array'>/**
19 </span></span> * @author Ed Spencer
20  * @class Ext.data.reader.Array
21  * @extends Ext.data.reader.Json
22  * 
23  * &lt;p&gt;Data reader class to create an Array of {@link Ext.data.Model} objects from an Array.
24  * Each element of that Array represents a row of data fields. The
25  * fields are pulled into a Record object using as a subscript, the &lt;code&gt;mapping&lt;/code&gt; property
26  * of the field definition if it exists, or the field's ordinal position in the definition.&lt;/p&gt;
27  * 
28  * &lt;p&gt;&lt;u&gt;Example code:&lt;/u&gt;&lt;/p&gt;
29  * 
30 &lt;pre&gt;&lt;code&gt;
31 Employee = Ext.define('Employee', {
32     extend: 'Ext.data.Model',
33     fields: [
34         'id',
35         {name: 'name', mapping: 1},         // &quot;mapping&quot; only needed if an &quot;id&quot; field is present which
36         {name: 'occupation', mapping: 2}    // precludes using the ordinal position as the index.        
37     ]
38 });
39
40 var myReader = new Ext.data.reader.Array({
41     model: 'Employee'
42 }, Employee);
43 &lt;/code&gt;&lt;/pre&gt;
44  * 
45  * &lt;p&gt;This would consume an Array like this:&lt;/p&gt;
46  * 
47 &lt;pre&gt;&lt;code&gt;
48 [ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]
49 &lt;/code&gt;&lt;/pre&gt;
50  * 
51  * @constructor
52  * Create a new ArrayReader
53  * @param {Object} meta Metadata configuration options.
54  */
55 Ext.define('Ext.data.reader.Array', {
56     extend: 'Ext.data.reader.Json',
57     alternateClassName: 'Ext.data.ArrayReader',
58     alias : 'reader.array',
59
60 <span id='Ext-data-reader-Array-method-buildExtractors'>    /**
61 </span>     * @private
62      * Most of the work is done for us by JsonReader, but we need to overwrite the field accessors to just
63      * reference the correct position in the array.
64      */
65     buildExtractors: function() {
66         this.callParent(arguments);
67         
68         var fields = this.model.prototype.fields.items,
69             length = fields.length,
70             extractorFunctions = [],
71             i;
72         
73         for (i = 0; i &lt; length; i++) {
74             extractorFunctions.push(function(index) {
75                 return function(data) {
76                     return data[index];
77                 };
78             }(fields[i].mapping || i));
79         }
80         
81         this.extractorFunctions = extractorFunctions;
82     }
83 });
84 </pre>
85 </body>
86 </html>