Ext JS Sencha Docs

Ext.data.field.Field

Alternate names

Ext.data.Field

Hierarchy

Ext.Base
Ext.data.field.Field

Mixins

Requires

Subclasses

Files

Fields are used to define the members of a Model. They aren't instantiated directly; instead, when we create a class that extends Ext.data.Model, it automatically creates Field instances for each field configured in a 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' }
    ]
});

Field Types

Fields come in various types. When declaring a field, the type property is used to specify the type of Field derived class used to manage values.

The predefined set of types are:

Conversion

When reading fields it is often necessary to convert the values received before using them or storing them in records. To handle these cases there is the convert method. This method is passed the received value (as well as the current record instance, but see below) and it returns the value to carry forward.

For auto fields there is no convert method. This is for efficiency. For other field types, there are often convert methods. You can provide a convert config when the field is defined like this:

 {
     name: 'timestamp',

     convert: function (value) {
         return new Date(value);
     }
 }

While this can be convenient, see below for details on defining Custom Types as that is often a better practice and avoids repeating these functions.

Note that when a defaultValue is specified, it will also be passed through to convert (either to the convert method or to the convert config).

Calculated Values

In some cases fields are the result of a calculation from other fields. Historically this was a second role for convert but that has some short comings. The simpler solution is the calculate config.

Values produced by calculate and convert are stored in the record as with any other field. In fact, if we define a calculated "firstName" field and log out all of the data, we'll see this:

var ed = Ext.create('User', { name: 'Ed Spencer' });

console.log(ed.data);

//outputs this:
{
    age: 0,
    email: "",
    firstName: "Ed",  // calculated field
    gender: "Unknown",
    name: "Ed Spencer"
}

Using calculate

 {
     name: 'firstName',

     calculate: function (data) {
         return data.name.split(' ')[0];
     }
 }

Using calculate is the simplest and safest way to define a calculated field. The most important part of this is that, internally, the code of the supplied function is parsed to extract its dependencies. In this case, the "name" field is the only dependency. This means that "firstName" will only need to be recalculated when "name" is modified.

Using convert

Following is the equivalent technique using convert

 {
     name: 'firstName',

     convert: function (value, record) {
         return record.get('name').split(' ')[0];
     },

     depends: [ 'name' ]
 }

When a convert function accepts a 2nd argument (a reference to the record), it is considered a calculated field. If a depends config is not provided then this field's dependencies are unknown. In this case, the depends are provided as would be automatically determined with the calculate config.

Updating

Historically convert methods were executed for each field by the set method and determine the value actually stored.

For example:

ed.set('age', 25.4); // stores 25 because "age" is an "int" not a "float"
console.log(ed.get('age')); // logs 25 (no decimals allowed for "int" fields)

This behavior can be enabled using Ext.data.Model.convertOnSet but is off by default. By default the convert method is only called when processing raw data or when calculating fields.

Dependencies

When a field's convert method processes values from the record (vs. just the field's value), it is best to also provide a depends config as shown above. Fields that provide a calculate method must follow the proper form for using fields so that dependencies can be extracted.

Calculated fields are processed after other fields based on their dependencies. Fields with convert methods that use the provided record that do not specify a depends config are processed as a group after all other fields since such converters can rely on anything in the record. The order of processing these fields with respect to each other is unspecified and should not be relied upon.

Serialization

To handle the inverse scenario of convert there is the serialize method. This method is called to produce the value to send to a server based on the internal value as would be returned from convert. In most cases, these methods should "round trip" a value:

 assertEqual(value, field.serialize(field.convert(value)));

By default, only date fields have a serialize method. Other types simply send their value unmodified.

Custom Types

Developers may create their own application-specific data types by deriving from this class. This is typically much better than applying multiple configuration values on field instances as these often become repetitive.

To illustrate, we define a "time" field type that stores a time-of-day represented as a number of minutes since Midnight.

 Ext.define('App.field.Time', {
     extend: 'Ext.data.field.Field',

     alias: 'data.field.time',

     timeFormat: 'g:i',

     convert: function (value) {
         if (value && Ext.isString(value)) {
             var date = Ext.Date.parse(value, this.timeFormat);
             if (!date) {
                 return null;
             }
             return (date.getHours() - 1) * 60 + date.getMinutes();
         }
         return value;
     }
 });

Validation

Custom field types can override the validate method or provide a set of validators.

 Ext.define('App.field.PhoneNumber', {
     extend: 'Ext.data.field.Field',

     alias: 'data.field.phonenumber',

     // Match U.S. phone numbers for example purposes
     validators: {
         type: 'format',
         matcher: /\d{3}\-\d{3}\-\d{4}/
     }
 });

Once the class is defined, fields can be declared using the new type (based on its alias) like so:

 Ext.define('App.model.PhoneCall', {
     fields: [
         { name: 'startTime', type: 'time' },
         { name: 'phoneNumber', type: 'phonenumber' }
     ]
 });
Defined By

Config options

Ext.data.field.Field
view source
: Booleanprivate
Used for validating a model. ...

Used for validating a model. Defaults to true. An empty value here will cause Ext.data.Model.isValid to evaluate to false.

Defaults to: true

Ext.data.field.Field
view source
: Boolean
Use when converting received data into a <code>int</code>, <code>float</code>, <code>bo...

Use when converting received data into a <code>int</code>, <code>float</code>, <code>bool</code> or <code>string</code> type. If the value cannot be parsed, null will be used if allowNull is true, otherwise a default value for that type will be used:

  • for int and float - 0.
  • for string - "".
  • for bool - false.

Note that when parsing of <code>date</code> type fails, the value will be null regardless of this setting.

Defaults to: false

Ext.data.field.Field
view source
: Function
This config defines a simple field calculation function. ...

This config defines a simple field calculation function. A calculate method only has access to the record data and should return the value of the calculated field. When provided in this way, the depends config is automatically determined by parsing the calculate function. For example:

 fields: [{
     name: 'firstName',
     type: 'string'
 },{
     name: 'lastName',
     type: 'string'
 },{
     name: 'fullName',
     calculate: function (data) {
         return data.firstName + ' ' + data.lastName;
     }
 }]

The above 'fullName' field is equivalent to:

 {
     name: 'fullName',
     convert: function (v, rec) {
         return rec.get('firstName') + ' ' + rec.get('lastName');
     },
     depends: ['firstName', 'lastName']
 }

The restrictions on form for a calculate method are that the accesses to field values must match the following regular expression (case insensitive):

 data.([a-z_][a-z0-9_]*)

The only advantage of a calculate method over a convert method is automatic determination of depends.

Ext.data.field.Field
view source
: Function
If specified this config overrides the convert method. ...

If specified this config overrides the convert method. See also calculate for simple field calculations.

Ext.data.field.Field
view source
: Boolean
A critical field is a field that must always be sent to the server even if it has not changed. ...

A critical field is a field that must always be sent to the server even if it has not changed. The most common example of such a field is the "id" of a record (see Ext.data.Model.idProperty but the Ext.data.Model.versionProperty is similarly a critical field.

Defaults to: false

Ext.data.field.Field
view source
: Object
The default value used when the creating an instance from a raw data object, and the property referenced by the mappi...

The default value used when the creating an instance from a raw data object, and the property referenced by the mapping does not exist in that data object.

The value undefined prevents defaulting in a value.

Ext.data.field.Field
view source
: String/String[]
The field name or names within the Model on which the value of this field depends, and from which a new value may be ...

The field name or names within the Model on which the value of this field depends, and from which a new value may be calculated. These values are the values used by the convert method. If you do not have a convert method then this config should not be specified.

Before using this config you should consider if using a calculate method instead of a convert method would be simpler.

Whenever any of the named fields are set using the set method, this fields will have its convert method called passing the record so that the dependent value can be calculated from all fields which it needs.

For example, to display a person's full name, using two separate firstName and lastName fields, configure the name field like this:

{ name: 'name',

   // Will be called whenever forename or surname fields are set
   convert: function (v, rec) {
       return rec.get('firstName') + ' ' + rec.get('lastName');
   },

   depends: [ 'firstName', 'lastName' ],

   // It should not be returned to the server - it's not a database field
   persist: false
}

Note that if you do not want the calculated field to be part of the field set sent back to the server when the store is synchronized, you should configure the field with persist set to false.

(Optional) A path expression for use by the Ext.data.reader.Reader implementation that is creating the Model to extra...

(Optional) A path expression for use by the Ext.data.reader.Reader implementation that is creating the Model to extract the Field value from the data object. If the path expression is the same as the field name, the mapping may be omitted. A function may be passed to do complex data extraction. The examples below are simple just to demonstrate the capability, typically, a function would not be used to extract such simple data.

The form of the mapping expression depends on the Reader being used.

  • Ext.data.reader.Json

    The mapping is a string containing the javascript expression to reference the data from an element of the data item's rootProperty Array. Defaults to the field name. If a function is passed, a single argument is received which contains the raw json object:

    // Server returns [{"name": "Foo", "age": 1}, {"name": "Bar", "age": 2}]
    mapping: function(data) {
        return data.name;
    }
    
  • Ext.data.reader.Xml

    The mapping is an Ext.DomQuery path to the data item relative to the DOM element that represents the record. Defaults to the field name. If a function is passed, a single argument is received which contains the record node:

    // Server returns <Root><Person><Name>Foo</Name><Age>1</Age></Person><Person><Name>Bar</Name><Age>2</Age></Person></Root>
    mapping: function(data) {
        return data.firstChild.textContent;
    }
    
  • Ext.data.reader.Array

    The mapping is a number indicating the Array index of the field's value. Defaults to the field specification's Array position. If a function is passed, a single argument is received which contains the child array.

    // Server returns [["Foo", 1], ["Bar", 2]]
    mapping: function(data) {
        return data[0];
    }
    

If a more complex value extraction strategy is required, then configure the Field with a convert function. This is passed the whole row object, and may interrogate it in whatever way is necessary in order to return the desired data.

Ext.data.field.Field
view source
: String
The name by which the field is referenced within the Model. ...

The name by which the field is referenced within the Model. This is referenced by, for example, the dataIndex property in column definition objects passed to Ext.grid.property.HeaderContainer.

Note: In the simplest case, if no properties other than name are required, a field definition may consist of just a String for the field name.

Ext.data.field.Field
view source
: Boolean
False to exclude this field from the Ext.data.Model.modified fields in a record. ...

False to exclude this field from the Ext.data.Model.modified fields in a record. This will also exclude the field from being written using a Ext.data.writer.Writer. This option is useful when fields are used to keep state on the client but do not need to be persisted to the server.

Defaults to false for calculated fields and true otherwise.

Ext.data.field.Field
view source
: String/Object
The name of the entity referenced by this field. ...

The name of the entity referenced by this field. In most databases, this relationship is represented by a "foreign key". That is, a value for such a field matches the value of the id for an entity of this type.

 Ext.define('MyApp.models.Organization', {
     extend: 'Ext.data.Model',
     ...
 });

 Ext.define('MyApp.models.User', {
     extend: 'Ext.data.Model',

     fields: [
         { name: 'organizationId', reference: 'Organization' }
     ],
     ...
 });

If a reference is not nullable, set the allowBlank property to false.

 Ext.define('MyApp.models.User', {
     extend: 'Ext.data.Model',

     fields: [
         { name: 'organizationId', reference: 'Organization', allowBlank: false }
     ],
     ...
 });

If the name of the generated association or other aspects need to be specified, the reference can be an object. The following usage shows what would be generated by default given the above examples using the string form.

 Ext.define('MyApp.models.User', {
     extend: 'Ext.data.Model',

     fields: [{
         name: 'organizationId',
         reference: {
             type: 'Organization',
             association: 'UsersByOrganization',
             role: 'organization',
             inverse: 'users'
         }
     }],
     ...
 });

Finally, a reference can also describe ownership between the entities. By default, no ownership relationship is assumed. If, however, the User entities are owned by their Organization, we could say this:

 Ext.define('MyApp.models.User', {
     extend: 'Ext.data.Model',

     fields: [{
         name: 'organizationId',
         reference: {
             parent: 'Organization' // Organization is the parent of User
         }
     }],
     ...
 });
  • type : String

    The type which this field references. This is the value set by the string form of reference. If the referenced entity has an ownership relationship this field should be omitted and reference.parent or reference.child should be specified instead.

  • association : String (optional)

    The name of the association. By default, the name of the assocation is the capitalized inverse plus "By" plus the capitalized role.

  • child : String (optional)

    Set this property instead of reference.type to indicate that the referenced entity is an owned child of this entity. That is, the reference entity should be deleted when this entity is deleted.

  • parent : String (optional)

    Set this property instead of reference.type to indicate that the referenced entity is the owning parent of this entity. That is, this entity should be deleted when the reference entity is deleted.

  • role : String (optional)

    The name of the role played by the referenced entity. By default, this is the field name (minus its "Id" suffix if present).

  • inverse : String (optional)

    The name of the inverse role (of this entity with respect to the reference entity). By default, this is the pluralized name of this entity, unless this reference is unique, in which case the default name is the singularized name of this entity.

Ext.data.field.Field
view source
: Function

See the serialize method.

See the serialize method.

Ext.data.field.Field
view source
: String
Initial direction to sort ("ASC" or "DESC"). ...

Initial direction to sort ("ASC" or "DESC"). Defaults to "ASC".

Defaults to: "ASC"

Ext.data.field.Field
view source
: Function/String
A function which converts a Field's value to a comparable value in order to ensure correct sort ordering. ...

A function which converts a Field's value to a comparable value in order to ensure correct sort ordering.

Predefined functions are provided in Ext.data.SortTypes. A custom sort example:

// current sort     after sort we want
// +-+------+          +-+------+
// |1|First |          |1|First |
// |2|Last  |          |3|Second|
// |3|Second|          |2|Last  |
// +-+------+          +-+------+

sortType: function(value) {
   switch (value.toLowerCase()) // native toLowerCase():
   {
      case 'first': return 1;
      case 'second': return 2;
      default: return 3;
   }
}

May also be set to a String value, corresponding to one of the named sort types in Ext.data.SortTypes.

Ext.data.field.Field
view source
: Boolean
true if the value of this field is unique amongst all instances. ...

true if the value of this field is unique amongst all instances. When used with a reference this describes a "one-to-one" relationship. It is almost always the case that a unique field cannot also be nullable.

Defaults to: false

Ext.data.field.Field
view source
: Object[]
An array of validators for this field. ...

An array of validators for this field. These validators will only be passed a field value to validate.

Properties

Defined By

Instance properties

...

Defaults to: 'Ext.Base'

The value true causes config values to be stored on instances using a property name prefixed with an underscore ("_")...

The value true causes config values to be stored on instances using a property name prefixed with an underscore ("_") character. A value of false stores config values as properties using their exact name (no prefix).

Defaults to: false

Available since: 5.0.0

Overrides: Ext.Component.$configPrefixed, Ext.data.AbstractStore.$configPrefixed, Ext.layout.Layout.$configPrefixed, Ext.layout.container.boxOverflow.None.$configPrefixed

The value true instructs the initConfig method to only honor values for properties declared in the config block of a ...

The value true instructs the initConfig method to only honor values for properties declared in the config block of a class. When false, properties that are not declared in a config block will be placed on the instance.

Defaults to: true

Available since: 5.0.0

Overrides: Ext.Component.$configStrict, Ext.data.AbstractStore.$configStrict, Ext.layout.Layout.$configStrict, Ext.layout.container.boxOverflow.None.$configStrict

Ext.data.field.Field
view source
: Stringprivate
also configures Factoryable ...

also configures Factoryable

Defaults to: 'data.field.'

Ext.data.field.Field
view source
: RegExpprivate
...

Defaults to: /^function\s+\(\s*([^,\)\s]+)/

Ext.data.field.Field
view source
: RegExpprivate
...

Defaults to: /[^\.a-z0-9_]([a-z_][a-z_0-9]*)\.([a-z_][a-z_0-9]*)/gi

Ext.data.field.Field
view source
: Booleanreadonly
This property is true if this field has a calculate method or a convert method that operates on the entire record as ...

This property is true if this field has a calculate method or a convert method that operates on the entire record as opposed to just the data value. This property is determined from the length of the convert function which means this is not calculated:

 convert: function (value) {
     return ...
 }

While this is calculated:

 convert: function (value, record) {
     return ...
 }

NOTE: It is recommended for such fields to use calculate or explicitly specify the fields used by convert using depends.

Defaults to: false

The default message to present for an invalid field. ...

The default message to present for an invalid field.

Defaults to: 'This field is invalid'

Available since: 5.0.0

Ext.data.field.Field
view source
: Ext.Class
The class (derived from Ext.data.Model) that defined this field. ...

The class (derived from Ext.data.Model) that defined this field.

 Ext.define('MyApp.models.Foo', {
     extend: 'Ext.data.Model',

     fields: [
         { name: 'bar' }
     ],
     ...
 });

 var barField = MyApp.models.Foo.getField('bar');

 alert(barField.definedBy === MyApp.models.Foo); // alerts 'true'

When a field is inherited, this value will reference the class that originally defined the field.

 Ext.define('MyApp.models.Base', {
     extend: 'Ext.data.Model',

     fields: [
         { name: 'foo' }
     ],
     ...
 });

 Ext.define('MyApp.models.Derived', {
     extend: 'MyApp.models.Base',

     fields: [
         { name: 'bar' }
     ],
     ...
 });

 var fooField = MyApp.models.Derived.getField('foo');

 alert(fooField.definedBy === MyApp.models.Base); // alerts 'true'
Ext.data.field.Field
view source
: Ext.data.field.Field[]privatereadonly
This array tracks the fields that have indicated this field in their depends list. ...

This array tracks the fields that have indicated this field in their depends list. If no fields depend on this field, this will be null.

Ext.data.field.Field
view source
: Booleanprivatereadonly
This flag is set to true for fields that have convert methods which take the 2nd argument (the record) and do not spe...

This flag is set to true for fields that have convert methods which take the 2nd argument (the record) and do not specify a depends set. Good fields indicate the fields on which they depend (if any).

Defaults to: false

Ext.data.field.Field
view source
: Object
If this property is specified by the target class of this mixin its properties are used to configure the created Ext....

If this property is specified by the target class of this mixin its properties are used to configure the created Ext.Factory.

Defaults to: {defaultProperty: 'name'}

Overrides: Ext.mixin.Factoryable.factoryConfig

Ext.data.field.Field
view source
: Booleanreadonly
This property is set to true if this is an id field. ...

This property is set to true if this is an id field.

Defaults to: false

This property is set to true during the call to initConfig. ...

This property is set to true during the call to initConfig.

Defaults to: false

Available since: 5.0.0

Ext.data.field.Field
view source
: Booleanprivate
...

Defaults to: true

Ext.data.field.Field
view source
: Booleanprivate
...

Defaults to: true

This property is set to true if this instance is the first of its class. ...

This property is set to true if this instance is the first of its class.

Defaults to: false

Available since: 5.0.0

This value is true and is used to identify plain objects from instances of a defined class. ...

This value is true and is used to identify plain objects from instances of a defined class.

Defaults to: true

...

Defaults to: 'factoryable'

Overrides: Ext.mixin.Identifiable.mixinId

Ext.data.field.Field
view source
: Number

The position of this field in the Ext.data.Model in which it was defined.

The position of this field in the Ext.data.Model in which it was defined.

Ext.data.field.Field
view source
: Numberprivatereadonly
This is a 1-based value that describes the dependency order of this field. ...

This is a 1-based value that describes the dependency order of this field. This is initialized to null (falsey) so we can cheaply topo-sort the fields of a class.

Get the reference to the current class from which this object was instantiated. ...

Get the reference to the current class from which this object was instantiated. Unlike statics, this.self is scope-dependent and it's meant to be used for dynamic inheritance. See statics for a detailed comparison

Ext.define('My.Cat', {
    statics: {
        speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
    },

    constructor: function() {
        alert(this.self.speciesName); // dependent on 'this'
    },

    clone: function() {
        return new this.self();
    }
});


Ext.define('My.SnowLeopard', {
    extend: 'My.Cat',
    statics: {
        speciesName: 'Snow Leopard'         // My.SnowLeopard.speciesName = 'Snow Leopard'
    }
});

var cat = new My.Cat();                     // alerts 'Cat'
var snowLeopard = new My.SnowLeopard();     // alerts 'Snow Leopard'

var clone = snowLeopard.clone();
alert(Ext.getClassName(clone));             // alerts 'My.SnowLeopard'
Ext.data.field.Field
view source
: RegExpprotectedreadonly
A regular expression for stripping non-numeric characters from a numeric value. ...

A regular expression for stripping non-numeric characters from a numeric value. This should be overridden for localization.

Defaults to: /[$,%]/g

Ext.data.field.Field
view source
: Stringprivate
...

Defaults to: 'auto'

Defined By

Static properties

...

Defaults to: []

Methods

Defined By

Instance methods

Ext.data.field.Field
view source
new( config ) : Ext.data.field.Field
...

Parameters

Returns

Fires

    ( deprecations )private
    This method applies a versioned, deprecation declaration to this class. ...

    This method applies a versioned, deprecation declaration to this class. This is typically called by the deprecated config.

    Parameters

    ( args ) : Objectdeprecatedprotected
    Call the original method that was previously overridden with override Ext.define('My.Cat', { constructor: functi...

    Call the original method that was previously overridden with override

    Ext.define('My.Cat', {
        constructor: function() {
            alert("I'm a cat!");
        }
    });
    
    My.Cat.override({
        constructor: function() {
            alert("I'm going to be a cat!");
    
            this.callOverridden();
    
            alert("Meeeeoooowwww");
        }
    });
    
    var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
                              // alerts "I'm a cat!"
                              // alerts "Meeeeoooowwww"
    

    This method has been deprecated

    Use callParent instead.

    Parameters

    • args : Array/Arguments

      The arguments, either an array or the arguments object from the current method, for example: this.callOverridden(arguments)

    Returns

    • Object

      Returns the result of calling the overridden method

    Call the "parent" method of the current method. ...

    Call the "parent" method of the current method. That is the method previously overridden by derivation or by an override (see Ext.define).

     Ext.define('My.Base', {
         constructor: function (x) {
             this.x = x;
         },
    
         statics: {
             method: function (x) {
                 return x;
             }
         }
     });
    
     Ext.define('My.Derived', {
         extend: 'My.Base',
    
         constructor: function () {
             this.callParent([21]);
         }
     });
    
     var obj = new My.Derived();
    
     alert(obj.x);  // alerts 21
    

    This can be used with an override as follows:

     Ext.define('My.DerivedOverride', {
         override: 'My.Derived',
    
         constructor: function (x) {
             this.callParent([x*2]); // calls original My.Derived constructor
         }
     });
    
     var obj = new My.Derived();
    
     alert(obj.x);  // now alerts 42
    

    This also works with static methods.

     Ext.define('My.Derived2', {
         extend: 'My.Base',
    
         statics: {
             method: function (x) {
                 return this.callParent([x*2]); // calls My.Base.method
             }
         }
     });
    
     alert(My.Base.method(10));     // alerts 10
     alert(My.Derived2.method(10)); // alerts 20
    

    Lastly, it also works with overridden static methods.

     Ext.define('My.Derived2Override', {
         override: 'My.Derived2',
    
         statics: {
             method: function (x) {
                 return this.callParent([x*2]); // calls My.Derived2.method
             }
         }
     });
    
     alert(My.Derived2.method(10); // now alerts 40
    

    To override a method and replace it and also call the superclass method, use callSuper. This is often done to patch a method to fix a bug.

    Parameters

    • args : Array/Arguments

      The arguments, either an array or the arguments object from the current method, for example: this.callParent(arguments)

    Returns

    • Object

      Returns the result of calling the parent method

    This method is used by an override to call the superclass method but bypass any overridden method. ...

    This method is used by an override to call the superclass method but bypass any overridden method. This is often done to "patch" a method that contains a bug but for whatever reason cannot be fixed directly.

    Consider:

     Ext.define('Ext.some.Class', {
         method: function () {
             console.log('Good');
         }
     });
    
     Ext.define('Ext.some.DerivedClass', {
         extend: 'Ext.some.Class',
    
         method: function () {
             console.log('Bad');
    
             // ... logic but with a bug ...
    
             this.callParent();
         }
     });
    

    To patch the bug in Ext.some.DerivedClass.method, the typical solution is to create an override:

     Ext.define('App.patches.DerivedClass', {
         override: 'Ext.some.DerivedClass',
    
         method: function () {
             console.log('Fixed');
    
             // ... logic but with bug fixed ...
    
             this.callSuper();
         }
     });
    

    The patch method cannot use callParent to call the superclass method since that would call the overridden method containing the bug. In other words, the above patch would only produce "Fixed" then "Good" in the console log, whereas, using callParent would produce "Fixed" then "Bad" then "Good".

    Parameters

    • args : Array/Arguments

      The arguments, either an array or the arguments object from the current method, for example: this.callSuper(arguments)

    Returns

    • Object

      Returns the result of calling the superclass method

    Ext.data.field.Field
    view source
    ( value1, value2 )private
    ...

    Parameters

    Fires

      Ext.data.field.Field
      view source
      ( lhs, rhs )private
      ...

      Parameters

      Ext.data.field.Field
      view source
      ( )private
      ...

      Fires

        Ext.data.field.Field
        view source
        ( validators )private
        ...

        Parameters

        Ext.data.field.Field
        view source
        ( value, record ) : Mixed
        A function which converts the value provided by the Reader into the value that will be stored in the record. ...

        A function which converts the value provided by the Reader into the value that will be stored in the record. This method can be overridden by a derived class or set as a convert config.

        If configured as null, then no conversion will be applied to the raw data property when this Field is read. This will increase performance. but you must ensure that the data is of the correct type and does not need converting.

        Example of convert functions:

        function fullName(v, record){
            return record.data.last + ', ' + record.data.first;
        }
        
        function location(v, record){
            return !record.data.city ? '' : (record.data.city + ', ' + record.data.state);
        }
        
        Ext.define('Dude', {
            extend: 'Ext.data.Model',
            fields: [
                {name: 'fullname',  convert: fullName},
                {name: 'firstname', mapping: 'name.first'},
                {name: 'lastname',  mapping: 'name.last'},
                {name: 'city', defaultValue: 'unknown'},
                'state',
                {name: 'location',  convert: location}
            ]
        });
        
        // create the data store
        var store = Ext.create('Ext.data.Store', {
            model: 'Dude',
            proxy: {
                type: 'memory',
                reader: {
                    type: 'json',
                    rootProperty: 'daRoot',
                    totalProperty: 'total'
                }
            }
        });
        
        var myData = [
            { key: 1,
              name: { first: 'Fat',    last:  'Albert' }
              // notice no city, state provided in data object
            },
            { key: 2,
              name: { first: 'Barney', last:  'Rubble' },
              city: 'Bedrock', state: 'Stoneridge'
            },
            { key: 3,
              name: { first: 'Cliff',  last:  'Claven' },
              city: 'Boston',  state: 'MA'
            }
        ];
        

        Parameters

        • value : Mixed

          The data value as read by the Reader, if undefined will use the configured defaultValue.

        • record : Ext.data.Model

          The data object containing the Model as read so far by the Reader. Note that the Model may not be fully populated at this point as the fields are read in the order that they are defined. fields array.

        Returns

        • Mixed

          The converted value for storage in the record.

        This method is called to cleanup an object and its resources. ...

        This method is called to cleanup an object and its resources. After calling this method, the object should not be used any further.

        Fires

          Overrides: Ext.util.ElementContainer.destroy, Ext.state.Stateful.destroy, Ext.Component.destroy, Ext.mixin.Observable.destroy, Ext.data.AbstractStore.destroy, Ext.Base.destroy, Ext.plugin.Abstract.destroy, Ext.draw.sprite.Sprite.destroy, Ext.app.BaseController.destroy

          Ext.data.field.Field
          view source
          ( v, rec )private
          ...

          Parameters

          Fires

            Ext.data.field.Field
            view source
            ( ) : Boolean
            Gets allowBlank for this field. ...

            Gets allowBlank for this field. See allowBlank.

            Returns

            Ext.data.field.Field
            view source
            ( ) : Boolean
            Gets allowNull for this field. ...

            Gets allowNull for this field. See allowNull.

            Returns

            Returns a specified config property value. ...

            Returns a specified config property value. If the name parameter is not passed, all current configuration options will be returned as key value pairs.

            Parameters

            • name : String (optional)

              The name of the config property to get.

            • peek : Boolean (optional)

              true to peek at the raw value without calling the getter.

              Defaults to: false

            Returns

            • Object

              The config property value.

            Ext.data.field.Field
            view source
            ( ) : Function
            Gets converter for this field. ...

            Gets converter for this field. See convert.

            Returns

            Ext.data.field.Field
            view source
            ( ) : Object
            Gets the defaultValue for this field. ...

            Gets the defaultValue for this field. See defaultValue.

            Returns

            Ext.data.field.Field
            view source
            ( ) : String[]
            Gets the depends for this field. ...

            Gets the depends for this field. See depends.

            Returns

            Returns the initial configuration passed to constructor when instantiating this class. ...

            Returns the initial configuration passed to constructor when instantiating this class.

            Parameters

            • name : String (optional)

              Name of the config option to return.

            Returns

            • Object/Mixed

              The full config object or a single config value when name parameter specified.

            Ext.data.field.Field
            view source
            ( ) : Object
            Get the mapping for this field. ...

            Get the mapping for this field. See mapping.

            Returns

            Ext.data.field.Field
            view source
            ( ) : String
            Gets the name for this field. ...

            Gets the name for this field. See name.

            Returns

            Ext.data.field.Field
            view source
            ( ) : Boolean
            Gets the persist for this field. ...

            Gets the persist for this field. See persist.

            Returns

            Ext.data.field.Field
            view source
            ( ) : String
            Gets the sortDir for this field. ...

            Gets the sortDir for this field. See sortDir.

            Returns

            Ext.data.field.Field
            view source
            ( ) : Function
            Gets the sortType for this field. ...

            Gets the sortType for this field. See sortType.

            Returns

            Ext.data.field.Field
            view source
            ( ) : String
            Gets a string representation of the type of this field. ...

            Gets a string representation of the type of this field.

            Returns

            ...

            Parameters

            Ext.data.field.Field
            view source
            ( ) : Boolean
            Checks if this field has a mapping applied. ...

            Checks if this field has a mapping applied.

            Returns

            • Boolean

              true if this field has a mapping.

            ( config ) : Ext.Basechainableprotected
            Initialize configuration for this class. ...

            Initialize configuration for this class. a typical example:

            Ext.define('My.awesome.Class', {
                // The default config
                config: {
                    name: 'Awesome',
                    isAwesome: true
                },
            
                constructor: function(config) {
                    this.initConfig(config);
                }
            });
            
            var awesome = new My.awesome.Class({
                name: 'Super Awesome'
            });
            
            alert(awesome.getName()); // 'Super Awesome'
            

            Parameters

            Returns

            Fires

              Ext.data.field.Field
              view source
              ( lhs, rhs )private
              ...

              Parameters

              Fires

                Ext.data.field.Field
                view source
                ( cls, data )private
                ...

                Parameters

                ...

                Parameters

                Ext.data.field.Field
                view source
                ( value, record ) : String
                A function which converts the Model's value for this Field into a form which can be used by whatever Writer is being ...

                A function which converts the Model's value for this Field into a form which can be used by whatever Writer is being used to sync data with the server.

                Parameters

                • value : Mixed

                  The Field's value - the value to be serialized.

                • record : Ext.data.Model

                  The record being serialized.

                Returns

                • String

                  The string that represents the Field's value.

                ( name, [value] ) : Ext.Basechainable
                Sets a single/multiple configuration options. ...

                Sets a single/multiple configuration options.

                Parameters

                • name : String/Object

                  The name of the property to set, or a set of key value pairs to set.

                • value : Object (optional)

                  The value to set for the name parameter.

                Returns

                Fires

                  Ext.data.field.Field
                  view source
                  ( modelValidators )private
                  ...

                  Parameters

                  Get the reference to the class from which this object was instantiated. ...

                  Get the reference to the class from which this object was instantiated. Note that unlike self, this.statics() is scope-independent and it always returns the class from which it was called, regardless of what this points to during run-time

                  Ext.define('My.Cat', {
                      statics: {
                          totalCreated: 0,
                          speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
                      },
                  
                      constructor: function() {
                          var statics = this.statics();
                  
                          alert(statics.speciesName);     // always equals to 'Cat' no matter what 'this' refers to
                                                          // equivalent to: My.Cat.speciesName
                  
                          alert(this.self.speciesName);   // dependent on 'this'
                  
                          statics.totalCreated++;
                      },
                  
                      clone: function() {
                          var cloned = new this.self();   // dependent on 'this'
                  
                          cloned.groupName = this.statics().speciesName;   // equivalent to: My.Cat.speciesName
                  
                          return cloned;
                      }
                  });
                  
                  
                  Ext.define('My.SnowLeopard', {
                      extend: 'My.Cat',
                  
                      statics: {
                          speciesName: 'Snow Leopard'     // My.SnowLeopard.speciesName = 'Snow Leopard'
                      },
                  
                      constructor: function() {
                          this.callParent();
                      }
                  });
                  
                  var cat = new My.Cat();                 // alerts 'Cat', then alerts 'Cat'
                  
                  var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'
                  
                  var clone = snowLeopard.clone();
                  alert(Ext.getClassName(clone));         // alerts 'My.SnowLeopard'
                  alert(clone.groupName);                 // alerts 'Cat'
                  
                  alert(My.Cat.totalCreated);             // alerts 3
                  

                  Returns

                  Ext.data.field.Field
                  view source
                  ( value, [separator], [errors] ) : Boolean/Stringprotectedtemplate
                  Validates the passed value for this field. ...

                  Validates the passed value for this field.

                  Available since: 5.0.0

                  This is a template method. a hook into the functionality of this class. Feel free to override it in child classes.

                  Parameters

                  • value : Object

                    The value to validate.

                  • separator : String (optional)

                    This string is passed if the caller wants all validation messages concatenated with this string between each. This can be handled as a "falsy" value because concatenating with no separator is seldom desirable.

                  • errors : Ext.data.ErrorCollection (optional)

                    This parameter is passed if the caller wants all validation results individually added to the collection.

                  Returns

                  • Boolean/String

                    true if the value is valid. A string may be returned if the value is not valid, to indicate an error message. Any other non true value indicates the value is not valid. This method is not implemented by default, subclasses may override it to provide an implementation.

                  Fires

                    Defined By

                    Static methods

                    ( config, [mixinClass] )privatestatic
                    Adds new config properties to this class. ...

                    Adds new config properties to this class. This is called for classes when they are declared, then for any mixins that class may define and finally for any overrides defined that target the class.

                    Parameters

                    • config : Object
                    • mixinClass : Class (optional)

                      The mixin class if the configs are from a mixin.

                    ( members )chainableprivatestatic
                    ...

                    Parameters

                    ( name, member )chainableprivatestatic
                    ...

                    Parameters

                    ( members, [isStatic], [privacy] )chainablestatic
                    Add methods / properties to the prototype of this class. ...

                    Add methods / properties to the prototype of this class.

                    Ext.define('My.awesome.Cat', {
                        constructor: function() {
                            ...
                        }
                    });
                    
                     My.awesome.Cat.addMembers({
                         meow: function() {
                            alert('Meowww...');
                         }
                     });
                    
                     var kitty = new My.awesome.Cat();
                     kitty.meow();
                    

                    Parameters

                    • members : Object

                      The members to add to this class.

                    • isStatic : Boolean (optional)

                      Pass true if the members are static.

                      Defaults to: false

                    • privacy : Boolean (optional)

                      Pass true if the members are private. This only has meaning in debug mode and only for methods.

                      Defaults to: false

                    ( members ) : Ext.Basechainablestatic
                    Add / override static properties of this class. ...

                    Add / override static properties of this class.

                    Ext.define('My.cool.Class', {
                        ...
                    });
                    
                    My.cool.Class.addStatics({
                        someProperty: 'someValue',      // My.cool.Class.someProperty = 'someValue'
                        method1: function() { ... },    // My.cool.Class.method1 = function() { ... };
                        method2: function() { ... }     // My.cool.Class.method2 = function() { ... };
                    });
                    

                    Parameters

                    Returns

                    ( fromClass, members ) : Ext.Baseprivatestatic
                    Borrow another class' members to the prototype of this class. ...

                    Borrow another class' members to the prototype of this class.

                    Ext.define('Bank', {
                        money: '$$$',
                        printMoney: function() {
                            alert('$$$$$$$');
                        }
                    });
                    
                    Ext.define('Thief', {
                        ...
                    });
                    
                    Thief.borrow(Bank, ['money', 'printMoney']);
                    
                    var steve = new Thief();
                    
                    alert(steve.money); // alerts '$$$'
                    steve.printMoney(); // alerts '$$$$$$$'
                    

                    Parameters

                    • fromClass : Ext.Base

                      The class to borrow members from

                    • members : Array/String

                      The names of the members to borrow

                    Returns

                    ( args )protectedstatic
                    ...

                    Parameters

                    ( args )protectedstatic
                    ...

                    Parameters

                    Create a new instance of this Class. ...

                    Create a new instance of this Class.

                    Ext.define('My.cool.Class', {
                        ...
                    });
                    
                    My.cool.Class.create({
                        someConfig: true
                    });
                    

                    All parameters are passed to the constructor of the class.

                    Returns

                    ( alias, origin )static
                    Create aliases for existing prototype methods. ...

                    Create aliases for existing prototype methods. Example:

                    Ext.define('My.cool.Class', {
                        method1: function() { ... },
                        method2: function() { ... }
                    });
                    
                    var test = new My.cool.Class();
                    
                    My.cool.Class.createAlias({
                        method3: 'method1',
                        method4: 'method2'
                    });
                    
                    test.method3(); // test.method1()
                    
                    My.cool.Class.createAlias('method5', 'method3');
                    
                    test.method5(); // test.method3() -> test.method1()
                    

                    Parameters

                    ( config )privatestatic
                    ...

                    Parameters

                    Returns the Ext.Configurator for this class. ...

                    Returns the Ext.Configurator for this class.

                    Returns

                    Get the current class' name in string format. ...

                    Get the current class' name in string format.

                    Ext.define('My.cool.Class', {
                        constructor: function() {
                            alert(this.self.getName()); // alerts 'My.cool.Class'
                        }
                    });
                    
                    My.cool.Class.getName(); // 'My.cool.Class'
                    

                    Returns

                    ( name, mixinClass )privatestatic
                    Used internally by the mixins pre-processor ...

                    Used internally by the mixins pre-processor

                    Parameters

                    ( fn, scope )chainableprivatestatic
                    ...

                    Parameters

                    Override members of this class. ...

                    Override members of this class. Overridden methods can be invoked via callParent.

                    Ext.define('My.Cat', {
                        constructor: function() {
                            alert("I'm a cat!");
                        }
                    });
                    
                    My.Cat.override({
                        constructor: function() {
                            alert("I'm going to be a cat!");
                    
                            this.callParent(arguments);
                    
                            alert("Meeeeoooowwww");
                        }
                    });
                    
                    var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
                                              // alerts "I'm a cat!"
                                              // alerts "Meeeeoooowwww"
                    

                    Direct use of this method should be rare. Use Ext.define instead:

                    Ext.define('My.CatOverride', {
                        override: 'My.Cat',
                        constructor: function() {
                            alert("I'm going to be a cat!");
                    
                            this.callParent(arguments);
                    
                            alert("Meeeeoooowwww");
                        }
                    });
                    

                    The above accomplishes the same result but can be managed by the Ext.Loader which can properly order the override and its target class and the build process can determine whether the override is needed based on the required state of the target class (My.Cat).

                    Parameters

                    • members : Object

                      The properties to add to this class. This should be specified as an object literal containing one or more properties.

                    Returns