ExtReact Docs Help

Introduction

The documentation for the ExtReact product diverges somewhat from the documentation of other Sencha products. The sections below describe documentation for all products except where indicated as unique to ExtReact.

Terms, Icons, and Labels

Many classes have shortcut names used when creating (instantiating) a class with a configuration object. The shortcut name is referred to as an alias (or xtype if the class extends Ext.Component). The alias/xtype is listed next to the class name of applicable classes for quick reference.

ExtReact component classes list the configurable name prominently at the top of the API class doc followed by the fully-qualified class name.

Access Levels

Framework classes or their members may be specified as private or protected. Else, the class / member is public. Public, protected, and private are access descriptors used to convey how and when the class or class member should be used.

Member Types

Member Syntax

Below is an example class member that we can disect to show the syntax of a class member (the lookupComponent method as viewed from the Ext.button.Button class in this case).

lookupComponent ( item ) : Ext.Component
protected

Called when a raw config object is added to this container either during initialization of the items config, or when new items are added), or {@link #insert inserted.

This method converts the passed object into an instanced child component.

This may be overridden in subclasses when special processing needs to be applied to child creation.

Parameters

item :  Object

The config object being added.

Returns
Ext.Component

The component to be added.

Let's look at each part of the member row:

Member Flags

The API documentation uses a number of flags to further commnicate the class member's function and intent. The label may be represented by a text label, an abbreviation, or an icon.

Class Icons

- Indicates a framework class

- A singleton framework class. *See the singleton flag for more information

- A component-type framework class (any class within the Ext JS framework that extends Ext.Component)

- Indicates that the class, member, or guide is new in the currently viewed version

Member Icons

- Indicates a class member of type config

Or in the case of an ExtReact component class this indicates a member of type prop

- Indicates a class member of type property

- Indicates a class member of type method

- Indicates a class member of type event

- Indicates a class member of type theme variable

- Indicates a class member of type theme mixin

- Indicates that the class, member, or guide is new in the currently viewed version

Class Member Quick-Nav Menu

Just below the class name on an API doc page is a row of buttons corresponding to the types of members owned by the current class. Each button shows a count of members by type (this count is updated as filters are applied). Clicking the button will navigate you to that member section. Hovering over the member-type button will reveal a popup menu of all members of that type for quick navigation.

Getter and Setter Methods

Getting and setter methods that correlate to a class config option will show up in the methods section as well as in the configs section of both the API doc and the member-type menus just beneath the config they work with. The getter and setter method documentation will be found in the config row for easy reference.

ExtReact component classes do not hoist the getter / setter methods into the prop. All methods will be described in the Methods section

History Bar

Your page history is kept in localstorage and displayed (using the available real estate) just below the top title bar. By default, the only search results shown are the pages matching the product / version you're currently viewing. You can expand what is displayed by clicking on the button on the right-hand side of the history bar and choosing the "All" radio option. This will show all recent pages in the history bar for all products / versions.

Within the history config menu you will also see a listing of your recent page visits. The results are filtered by the "Current Product / Version" and "All" radio options. Clicking on the button will clear the history bar as well as the history kept in local storage.

If "All" is selected in the history config menu the checkbox option for "Show product details in the history bar" will be enabled. When checked, the product/version for each historic page will show alongside the page name in the history bar. Hovering the cursor over the page names in the history bar will also show the product/version as a tooltip.

Search and Filters

Both API docs and guides can be searched for using the search field at the top of the page.

On API doc pages there is also a filter input field that filters the member rows using the filter string. In addition to filtering by string you can filter the class members by access level, inheritance, and read only. This is done using the checkboxes at the top of the page.

The checkbox at the bottom of the API class navigation tree filters the class list to include or exclude private classes.

Clicking on an empty search field will show your last 10 searches for quick navigation.

API Doc Class Metadata

Each API doc page (with the exception of Javascript primitives pages) has a menu view of metadata relating to that class. This metadata view will have one or more of the following:

Expanding and Collapsing Examples and Class Members

Runnable examples (Fiddles) are expanded on a page by default. You can collapse and expand example code blocks individually using the arrow on the top-left of the code block. You can also toggle the collapse state of all examples using the toggle button on the top-right of the page. The toggle-all state will be remembered between page loads.

Class members are collapsed on a page by default. You can expand and collapse members using the arrow icon on the left of the member row or globally using the expand / collapse all toggle button top-right.

Desktop -vs- Mobile View

Viewing the docs on narrower screens or browsers will result in a view optimized for a smaller form factor. The primary differences between the desktop and "mobile" view are:

Viewing the Class Source

The class source can be viewed by clicking on the class name at the top of an API doc page. The source for class members can be viewed by clicking on the "view source" link on the right-hand side of the member row.

ExtWebComponents 7.5.0


top

Ext.data.field.Field alias: data.field.auto

Summary

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 Ext.data.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.

Note: Fields used by the calculate method must be explicitly defined in the fields of the model.

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

Fields modified with the set method will have their stored value set using the convert / calculate method when present.

For example:

Ext.define('MyApp.model.Employee', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'salary',
        convert: function (val) {
            var startingBonus = val * .1;
            return val + startingBonus;
        }
    }],
    convertOnSet: false
});

var tina = Ext.create('MyApp.model.Employee', {
    salary: 50000
});

console.log(tina.get('salary')); // logs 55000

tina.set('salary', 60000);
console.log(tina.get('salary')); // logs 60000

This default behavior can be disabled by setting the Model's Ext.data.Model#cfg-convertOnSet config to false.

Note: convertOnSet false only prevents the convert / calculate call when the set fieldName param matches the field's name. See convertOnSet for additional details.

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 Ext.data.field.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' }
     ]
 });
No members found using the current filters

configs

Optional Configs

allowBlank : Boolean
private pri

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

Defaults to:

true

getAllowBlank Boolean

Gets allowBlank for this field. See allowBlank.

Returns

:Boolean

allowBlank

allowNull : Boolean

Use when converting received data into a Ext.data.field.Integer, Ext.data.field.Number, Ext.data.field.Boolean or Ext.data.field.String 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 Ext.data.field.Date type fails, the value will be null regardless of this setting.

Defaults to:

false

getAllowNull Boolean

Gets allowNull for this field. See allowNull.

Returns

:Boolean

allowNull

calculate : 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_]*)
 // where 'data' is the param passed to the calculate method

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

Note: The use of calculate and method-convert are exclusive. The calculate method will override the convert method if both are configured.

Note: Fields used by the calculate method must be explicitly defined in the fields of the model.

Parameters

data :  Object

An object with all values for each field in the parent model. See getData.

Returns

:Mixed

value The value of the calculated field

convert : Function

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

Note: The use of calculate and convert are exclusive. The calculate method will override the convert method if both are configured.

getConvert Function

Gets converter for this field. See method-convert.

Returns

:Function

convert

critical : Boolean

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

defaultValue : Object

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.

Defaults to:

undefined

getDefaultValue Object

Gets the defaultValue for this field. See defaultValue.

Returns

:Object

defaultValue

depends : String / String[]

The field name or names within the Ext.data.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 Ext.data.Model 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.

Defaults to:

null

getDepends String[]

Gets the depends for this field. See depends.

Returns

:String[]

depends

mapping : String / Number / Function

(Optional) A path expression for use by the Ext.data.reader.Reader implementation that is creating the Ext.data.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 cfg-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.

Defaults to:

null

getMapping Object

Get the mapping for this field. See mapping.

Returns

:Object

mapping

name : String

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.

Defaults to:

null

getName String

Gets the name for this field. See name.

Returns

:String

name

persist : Boolean

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.

Defaults to:

null

getPersist Boolean

Gets the persist for this field. See persist.

Returns

:Boolean

persist

reference : String / Object

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.

For further documentation, see Ext.data.schema.Reference.

Defaults to:

null

serialize

A function which converts the Model's value for this Field into a form which can be used by whatever Ext.data.writer.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.

sortType : Function / String

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.

getSortType Function

Gets the sortType for this field. See sortType.

Returns

:Function

sortType

summary : String / Object / Function

The summary type for this field. This is used to calculate a summary value by the Ext.data.Model.

  • If a string, it should be an alias for one of the Ext.data.summary types.
  • If an object, a config for one of the Ext.data.summary types.
  • If a function, it should match the signature for calculate.

Defaults to:

null

Available since: 6.5.0

getSummary Ext.data.summary.Base

Gets the summary for this field. See summary.

Returns

:Ext.data.summary.Base

The summary.

summaryField : String
private pri

A field to use as the basis for calculating a summary. This is used in conjunction with the virtual summary fields. See Ext.data.Model#cfg-summary.

Defaults to:

''

Available since: 6.5.0

unique : Boolean

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

validators : Object[]

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

properties

Instance Properties

$className
private pri

Defaults to:

'Ext.Base'

$configPrefixed : Boolean
private pri

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:

true

Available since: 5.0.0

$configStrict : Boolean
private pri

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

$configTransforms : Object / Array
private pri

A prototype-chained object storing transform method names and priorities stored on the class prototype. On first instantiation, this object is converted into an array that is sorted by priority and stored on the constructor.

Defaults to:

{}

calculated : Boolean
readonly ro

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

clearPropertiesOnDestroy : Boolean / "async"
protected pro

Setting this property to false will prevent nulling object references on a Class instance after destruction. Setting this to "async" will delay the clearing for approx 50ms.

Defaults to:

true

Available since: 6.2.0

clearPrototypeOnDestroy : Boolean
private pri

Setting this property to true will result in setting the object's prototype to null after the destruction sequence is fully completed. After that, most attempts at calling methods on the object instance will result in "method not defined" exception. This can be very helpful with tracking down otherwise hard to find bugs like runaway Ajax requests, timed functions not cleared on destruction, etc.

Note that this option can only work in browsers that support Object.setPrototypeOf method, and is only available in debugging mode.

Defaults to:

false

Available since: 6.2.0

defaultInvalidMessage : String

The default message to present for an invalid field.

Defaults to:

'This field is invalid'

Available since: 5.0.0

definedBy : Ext.Class

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'

Defaults to:

null

dependents : Ext.data.field.Field[]
readonly ro private pri

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.

Defaults to:

null

destroyed : Boolean

This property is set to true after the destroy method is called.

Defaults to:

false

evil : Boolean
readonly ro private pri

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

factoryConfig : Object

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'
}

identifier : Boolean
readonly ro

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

Defaults to:

false

isConfiguring : Boolean
readonly ro protected pro

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

Defaults to:

false

Available since: 5.0.0

isFirstInstance : Boolean
readonly ro protected pro

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

Defaults to:

false

Available since: 5.0.0

isInstance : Boolean
readonly ro protected pro

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

Defaults to:

true

ordinal : Number

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

Defaults to:

undefined

rank : Number
readonly ro private pri

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

Defaults to:

null

self : Ext.Class
protected pro

Get the reference to the current class from which this object was instantiated. Unlike Ext.Base#statics, this.self is scope-dependent and it's meant to be used for dynamic inheritance. See Ext.Base#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'

Defaults to:

Base

stripRe : RegExp
readonly ro protected pro

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

Defaults to:

/[$,%]/g

Static Properties

$onExtended
static sta private pri

Defaults to:

[]

methods

Instance Methods

addDeprecations ( deprecations )
private pri

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

Parameters

deprecations :  Object

callOverridden ( args ) : Object
deprecated dep protected pro

Call the original method that was previously overridden with Ext.Base#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"

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

Deprecated since version 4.1.0
Use method-callParent instead.

callParent ( args ) : Object
protected pro

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 and private methods.

 Ext.define('My.Derived2', {
     extend: 'My.Base',

     // privates: {
     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',

     // privates: {
     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 method-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

callSuper ( args ) : Object
protected pro

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 method-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

collate ( value1, value2 ) : Number

Compares two values to retrieve their relative position in sort order, taking into account any sortType. Also see compare.

Parameters

value1 :  Object

The first value.

value2 :  Object

The second value.

Returns

:Number

-1 if value1 is less than value2; 1 if value1 is greater than value2; 0 otherwise.

compare ( value1, value2 ) : Number

Compares two values to retrieve their relative position in sort order. Also see collate.

Parameters

value1 :  Object

The first value.

value2 :  Object

The second value.

Returns

:Number

-1 if value1 is less than value2; 1 if value1 is greater than value2; 0 otherwise.

convert ( value, record ) : Mixed

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.

destroy

This method is called to cleanup an object and its resources. After calling this method, the object should not be used any further in any way, including access to its methods and properties.

To prevent potential memory leaks, all object references will be nulled at the end of destruction sequence, unless clearPropertiesOnDestroy is set to false.

destroyMembers ( args )

Destroys member properties by name.

If a property name is the name of a config, the getter is not invoked, so if the config has not been initialized, nothing will be done.

The property will be destroyed, and the corrected name (if the property is a config and config names are prefixed) will set to null in this object's dictionary.

Parameters

args :  String...

One or more names of the properties to destroy and remove from the object.

getConfig ( [name], [peek], [ifInitialized] ) : Object

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

ifInitialized :  Boolean (optional)

true to only return the initialized property value, not the raw config value, and not to trigger initialization. Returns undefined if the property has not yet been initialized.

Defaults to: false

Returns

:Object

The config property value.

getInitialConfig ( [name] ) : Object/Mixed

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

Given this example Ext.button.Button definition and instance:

Ext.define('MyApp.view.Button', {
    extend: 'Ext.button.Button',
    xtype: 'mybutton',

    scale: 'large',
    enableToggle: true
});

var btn = Ext.create({
    xtype: 'mybutton',
    renderTo: Ext.getBody(),
    text: 'Test Button'
});

Calling btn.getInitialConfig() would return an object including the config options passed to the create method:

xtype: 'mybutton',
renderTo: // The document body itself
text: 'Test Button'

Calling btn.getInitialConfig('text')returns 'Test Button'.

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.

getSortDir String
deprecated dep

Gets the sortDir for this field.

Returns

:String

sortDir

Deprecated since version 5.1
Setting sortDir and calling getSortDir were never applied by the the Sorter. This functionality does not natively exist on field instances.

getType String

Gets a string representation of the type of this field.

Returns

:String

type

hasConfig ( name )
private pri

Parameters

name :  String

hasMapping Boolean

Checks if this field has a mapping applied.

Returns

:Boolean

true if this field has a mapping.

initConfig ( instanceConfig ) : Ext.Base
chainable ch protected pro

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

instanceConfig :  Object

Returns

:Ext.Base

this

isEqual ( value1, value2 ) : Boolean

Tests whether two values are equal based on this field type. This uses the compare method to determine equality, so this method should generally not be overridden.

Parameters

value1 :  Object

The first value.

value2 :  Object

The second value.

Returns

:Boolean

true if the values are equal.

serialize ( value, record ) : String

A function which converts the Model's value for this Field into a form which can be used by whatever Ext.data.writer.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.

setConfig ( name, [value] ) : Ext.Base
chainable ch

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

:Ext.Base

this

statics Ext.Class
protected pro

Get the reference to the class from which this object was instantiated. Note that unlike Ext.Base#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();

        // always equals to 'Cat' no matter what 'this' refers to
        // equivalent to: My.Cat.speciesName
        alert(statics.speciesName);


        alert(this.self.speciesName);   // dependent on 'this'

        statics.totalCreated++;
    },

    clone: function() {
        var cloned = new this.self();   // dependent on 'this'

        // equivalent to: My.Cat.speciesName
        cloned.groupName = this.statics().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.Class

validate ( value, [separator], [errors], record ) : Boolean/String
template tpl protected pro

Validates the passed value for this field.

Available since: 5.0.0

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/Ext.util.Collection/Array (optional)

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

record :  Ext.data.Model

The record being validated

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.

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

watchConfig ( name, fn, scope )
private pri

Watches config properties.

 instance.watchConfig({
     title: 'onTitleChange',
     scope: me
 });

Available since: 6.7.0

Parameters

name :  Object

fn :  Object

scope :  Object

Static Methods

addConfig ( config, [mixinClass] )
static sta private pri

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 :  Ext.Class (optional)

The mixin class if the configs are from a mixin.

addInheritableStatics ( members ) :
chainable ch static sta private pri

Parameters

members :  Object

Returns

:

addMember ( name, member, privacy ) :
chainable ch static sta private pri

Parameters

name :  Object

member :  Object

privacy :  Object

Returns

:

addMembers ( members, [isStatic], [privacy] ) :
chainable ch static sta

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

Returns

:

addStatics ( members ) : Ext.Base
chainable ch static sta

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

members :  Object

Returns

:Ext.Base

this

borrow ( fromClass, members ) : Ext.Base
static sta private pri

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

:Ext.Base

this

callParent ( args )
static sta protected pro

Parameters

args :  Object

callSuper ( args )
static sta protected pro

Parameters

args :  Object

create Object
static sta

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

:Object

the created instance.

createAlias ( alias, origin )
static sta

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

alias :  String/Object

The new method name, or an object to set multiple aliases. See flexSetter

origin :  String/Object

The original method name

extend ( parentClass )
static sta private pri

Parameters

parentClass :  Object

getConfigurator Ext.Configurator
static sta private pri

Returns the Ext.Configurator for this class.

Returns

:Ext.Configurator

getName String
static sta

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

:String

className

mixin ( name, mixinClass ) :
chainable ch static sta private pri

Used internally by the mixins pre-processor

Parameters

name :  Object

mixinClass :  Object

Returns

:

onExtended ( fn, scope ) :
chainable ch static sta private pri

Parameters

fn :  Object

scope :  Object

Returns

:

override ( members ) : Ext.Base
chainable ch static sta

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

:Ext.Base

this class

ExtWebComponents 7.5.0