- * @class Ext.data.Field
- * @extends Object
- *
- * <p>Fields are used to define what a Model is. They aren't instantiated directly - instead, when we create a class
- * that extends {@link Ext.data.Model}, it will automatically create a Field instance for each field configured in a
- * {@link Ext.data.Model Model}. For example, we might set up a model like this:</p>
- *
-<pre><code>
-Ext.define('User', {
- extend: 'Ext.data.Model',
- fields: [
- 'name', 'email',
- {name: 'age', type: 'int'},
- {name: 'gender', type: 'string', defaultValue: 'Unknown'}
- ]
-});
-</code></pre>
- *
- * <p>Four fields will have been created for the User Model - name, email, age and gender. Note that we specified a
- * couple of different formats here; if we only pass in the string name of the field (as with name and email), the
- * field is set up with the 'auto' type. It's as if we'd done this instead:</p>
- *
-<pre><code>
-Ext.define('User', {
- extend: 'Ext.data.Model',
- fields: [
- {name: 'name', type: 'auto'},
- {name: 'email', type: 'auto'},
- {name: 'age', type: 'int'},
- {name: 'gender', type: 'string', defaultValue: 'Unknown'}
- ]
-});
-</code></pre>
- *
- * <p><u>Types and conversion</u></p>
- *
- * <p>The {@link #type} is important - it's used to automatically convert data passed to the field into the correct
- * format. In our example above, the name and email fields used the 'auto' type and will just accept anything that is
- * passed into them. The 'age' field had an 'int' type however, so if we passed 25.4 this would be rounded to 25.</p>
- *
- * <p>Sometimes a simple type isn't enough, or we want to perform some processing when we load a Field's data. We can
- * do this using a {@link #convert} function. Here, we're going to create a new field based on another:</p>
- *
-<code><pre>
-Ext.define('User', {
- extend: 'Ext.data.Model',
- fields: [
- 'name', 'email',
- {name: 'age', type: 'int'},
- {name: 'gender', type: 'string', defaultValue: 'Unknown'},
-
- {
- name: 'firstName',
- convert: function(value, record) {
- var fullName = record.get('name'),
- splits = fullName.split(" "),
- firstName = splits[0];
-
- return firstName;
- }
- }
- ]
-});
-</code></pre>
- *
- * <p>Now when we create a new User, the firstName is populated automatically based on the name:</p>
- *
-<code><pre>
-var ed = Ext.ModelManager.create({name: 'Ed Spencer'}, 'User');
-
-console.log(ed.get('firstName')); //logs 'Ed', based on our convert function
-</code></pre>
- *
- * <p>In fact, if we log out all of the data inside ed, we'll see this:</p>
- *
-<code><pre>
-console.log(ed.data);
-
-//outputs this:
-{
- age: 0,
- email: "",
- firstName: "Ed",
- gender: "Unknown",
- name: "Ed Spencer"
-}
-</code></pre>
- *
- * <p>The age field has been given a default of zero because we made it an int type. As an auto field, email has
- * defaulted to an empty string. When we registered the User model we set gender's {@link #defaultValue} to 'Unknown'
- * so we see that now. Let's correct that and satisfy ourselves that the types work as we expect:</p>
- *
-<code><pre>
-ed.set('gender', 'Male');
-ed.get('gender'); //returns 'Male'
-
-ed.set('age', 25.4);
-ed.get('age'); //returns 25 - we wanted an int, not a float, so no decimal places allowed
-</code></pre>
- *
+ *
+ * Fields are used to define what a Model is. They aren't instantiated directly - instead, when we create a class that
+ * extends {@link Ext.data.Model}, it will automatically create a Field instance for each field configured in a {@link
+ * Ext.data.Model Model}. For example, we might set up a model like this:
+ *
+ * Ext.define('User', {
+ * extend: 'Ext.data.Model',
+ * fields: [
+ * 'name', 'email',
+ * {name: 'age', type: 'int'},
+ * {name: 'gender', type: 'string', defaultValue: 'Unknown'}
+ * ]
+ * });
+ *
+ * Four fields will have been created for the User Model - name, email, age and gender. Note that we specified a couple
+ * of different formats here; if we only pass in the string name of the field (as with name and email), the field is set
+ * up with the 'auto' type. It's as if we'd done this instead:
+ *
+ * Ext.define('User', {
+ * extend: 'Ext.data.Model',
+ * fields: [
+ * {name: 'name', type: 'auto'},
+ * {name: 'email', type: 'auto'},
+ * {name: 'age', type: 'int'},
+ * {name: 'gender', type: 'string', defaultValue: 'Unknown'}
+ * ]
+ * });
+ *
+ * # Types and conversion
+ *
+ * The {@link #type} is important - it's used to automatically convert data passed to the field into the correct format.
+ * In our example above, the name and email fields used the 'auto' type and will just accept anything that is passed
+ * into them. The 'age' field had an 'int' type however, so if we passed 25.4 this would be rounded to 25.
+ *
+ * Sometimes a simple type isn't enough, or we want to perform some processing when we load a Field's data. We can do
+ * this using a {@link #convert} function. Here, we're going to create a new field based on another:
+ *
+ * Ext.define('User', {
+ * extend: 'Ext.data.Model',
+ * fields: [
+ * 'name', 'email',
+ * {name: 'age', type: 'int'},
+ * {name: 'gender', type: 'string', defaultValue: 'Unknown'},
+ *
+ * {
+ * name: 'firstName',
+ * convert: function(value, record) {
+ * var fullName = record.get('name'),
+ * splits = fullName.split(" "),
+ * firstName = splits[0];
+ *
+ * return firstName;
+ * }
+ * }
+ * ]
+ * });
+ *
+ * Now when we create a new User, the firstName is populated automatically based on the name:
+ *
+ * var ed = Ext.create('User', {name: 'Ed Spencer'});
+ *
+ * console.log(ed.get('firstName')); //logs 'Ed', based on our convert function
+ *
+ * In fact, if we log out all of the data inside ed, we'll see this:
+ *
+ * console.log(ed.data);
+ *
+ * //outputs this:
+ * {
+ * age: 0,
+ * email: "",
+ * firstName: "Ed",
+ * gender: "Unknown",
+ * name: "Ed Spencer"
+ * }
+ *
+ * The age field has been given a default of zero because we made it an int type. As an auto field, email has defaulted
+ * to an empty string. When we registered the User model we set gender's {@link #defaultValue} to 'Unknown' so we see
+ * that now. Let's correct that and satisfy ourselves that the types work as we expect:
+ *
+ * ed.set('gender', 'Male');
+ * ed.get('gender'); //returns 'Male'
+ *
+ * ed.set('age', 25.4);
+ * ed.get('age'); //returns 25 - we wanted an int, not a float, so no decimal places allowed