Hierarchy
Ext.BaseExt.EventedExt.AbstractComponentExt.ComponentExt.ContainerExt.dataview.component.DataItemExt.dataview.component.ListItemInherited mixins
Files
A ListItem is a container for Ext.dataview.List with useSimpleItems: false.
ListItem configures and updates the records for
the sub-component items in a list.
Overwrite the updateRecord()
method to set a sub-component's value.
Sencha Touch calls updateRecord()
whenever the data in the list updates.
The updatedata
event fires after updateRecord()
runs.
Note: Use of ListItem increases overhead since it generates more markup than using the List class with useSimpleItems: true. This overhead is more noticeable in Internet Explorer. If at all possible, use Ext.dataview.component.SimpleListItem instead.
The following example shows how to configure and update sub-component items in a list:
Ext.define('Twitter.view.TweetListItem', {
extend: 'Ext.dataview.component.ListItem',
xtype : 'tweetlistitem',
requires: [
'Ext.Img'
],
config: {
userName: {
cls: 'username'
},
text: {
cls: 'text'
},
avatar: {
docked: 'left',
xtype : 'image',
cls : 'avatar',
width: '48px',
height: '48px'
},
layout: {
type: 'vbox'
}
},
applyUserName: function(config) {
return Ext.factory(config, Ext.Component, this.getUserName());
},
updateUserName: function(newUserName) {
if (newUserName) {
this.insert(0, newUserName);
}
},
applyText: function(config) {
return Ext.factory(config, Twitter.view.TweetListItemText, this.getText());
},
updateText: function(newText) {
if (newText) {
this.add(newText);
}
},
applyAvatar: function(config) {
return Ext.factory(config, Ext.Img, this.getAvatar());
},
updateAvatar: function(newAvatar) {
if (newAvatar) {
this.add(newAvatar);
}
},
updateRecord: function(record) {
if (!record) {
return;
}
this.getUserName().setHtml(record.get('username'));
this.getText().setHtml(record.get('text'));
this.getAvatar().setSrc(record.get('avatar_url'));
this.callParent(arguments);
}
});
The item from the items collection that will be active first. This is usually only meaningful in a card layout, where only one item can be active at a time. If passes a string, it will be assumed to be a Ext.ComponentQuery selector.
Defaults to: 0
If true
, child items will be destroyed as soon as they are removed
from this container.
Defaults to: true
The base CSS class to apply to this component's element. This will also be prepended to other elements within this component. To add specific styling for sub-classes, use the cls config.
Defaults to: Ext.baseCSSPrefix + 'list-item'
Overrides: Ext.Component.baseCls, Ext.dataview.component.DataItem.baseCls
The border width to use on this Component. Can be specified as a number (in which case all edges get the same border width) or a CSS string like '5 10 10 10'.
Please note that this will not add
a border-color
or border-style
CSS property to the component; you must do that manually using either CSS or
the style configuration.
Ext.Viewport.add({
centered: true,
width: 100,
height: 100,
border: 3,
style: 'border-color: blue; border-style: solid;'
// ...
});
Ext.Viewport.add({
centered: true,
width: 100,
height: 100,
border: 3,
cls: 'my-component'
// ...
});
And your CSS file:
.my-component {
border-color: red;
border-style: solid;
}
The absolute bottom position of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
Explicitly setting this value will make this Component become 'floating', which means its layout will no
longer be affected by the Container that it resides in.
The event name to bubble, or an Array of event names.
The event name to bubble, or an Array of event names.
Animation to be used during transitions of cards.
Animation to be used during transitions of cards.
This cfg has been removed since 2.0.0
Please use Ext.layout.Card.animation instead
Whether or not this Component is absolutely centered inside its Container
Whether or not this Component is absolutely centered inside its Container
CSS class to add to this Component. Deprecated, please use cls instead
This cfg has been deprecated since 2.0.0
The configured element will automatically be added as the content of this component. When you pass a string, we expect it to be an element id. If the content element is hidden, we will automatically show it.
Enables you to easily control Components inside this Container by listening to their events and taking some action. For example, if we had a container with a nested Disable button, and we wanted to hide the Container when the Disable button is tapped, we could do this:
Ext.create('Ext.Container', {
control: {
'button[text=Disable]': {
tap: 'hideMe'
}
},
hideMe: function () {
this.hide();
}
});
We used a Ext.ComponentQuery selector to listen to the tap event on any
button anywhere inside the Container that has the text 'Disable'.
Whenever a Component matching that selector fires the tap
event our hideMe
function is called. hideMe
is
called with scope: this
(e.g. this
is the Container instance).
Defaults to: {}
The dataMap allows you to map record fields to specific configurations in this component.
For example, lets say you have a text
configuration which, when applied, gets turned into an instance of an Ext.Component.
We want to update the html of this component when the 'text' field of the record gets changed.
For example:
dataMap: {
getText: {
setHtml: 'text'
}
}
In this example, it is simply a matter of setting the key of the object to be the getter of the config (getText
), and then give that
property a value of an object, which then has setHtml
(the html setter) as the key, and text
(the field name) as the value.
Defaults to: {}
Overrides: Ext.dataview.component.DataItem.dataMap
The default xtype of child Components to create in this Container when a child item is specified as a raw configuration object, rather than as an instantiated Component.
Defaults to: 'component'
Overrides: Ext.Container.defaultType
A set of default configurations to apply to all child Components in this Container. It's often useful to specify defaults when creating more than one items with similar configurations. For example here we can specify that each child is a panel and avoid repeating the xtype declaration for each one:
Ext.create('Ext.Container', {
defaults: {
xtype: 'panel'
},
items: [
{
html: 'Panel 1'
},
{
html: 'Panel 2'
}
]
});
The CSS class to add to the component when it is disabled
Defaults to: "x-item-disabled"
The dock position of this component in its container. Can be left
, top
, right
or bottom
.
Notes
You must use a HTML5 doctype for docked bottom
to work. To do this, simply add the following code to the HTML file:
<!doctype html>
So your index.html file should look a little like this:
<!doctype html>
<html>
<head>
<title>MY application title</title>
...
This cfg has been deprecated since 2.0.0
This has been deprecated. Please use docked instead.
The dock position of this component in its container. Can be left
, top
, right
or bottom
.
Notes
You must use a HTML5 doctype for docked bottom
to work. To do this, simply add the following code to the HTML file:
<!doctype html>
So your index.html file should look a little like this:
<!doctype html>
<html>
<head>
<title>MY application title</title>
...
Configuration options to make this Component draggable
Configuration options to make this Component draggable
Animation effect to apply when the Component is being shown. Typically you want to use an inbound animation type such as 'fadeIn' or 'slideIn'.
This cfg has been deprecated since 2.0.0
Please use showAnimation instead.
Animation effect to apply when the Component is being hidden.
This cfg has been deprecated since 2.0.0
Please use hideAnimation instead. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'.
The flex of this item if this item item is inside a Ext.layout.HBox or Ext.layout.VBox layout.
You can also update the flex of a component dynamically using the Ext.layout.FlexBox.setItemFlex method.
Deprecated, please use left, top, right or bottom instead.
Ext.Viewport.add({
top: 100,
left: 100,
width: 500,
height: 200,
html: 'Floating component!'
});
This cfg has been deprecated since 2.0.0
The CSS class to add to this component when it is floatable.
Defaults to: "x-floating"
Force the component to take up 100% width and height available, by adding it to Ext.Viewport.
Force the component to take up 100% width and height available, by adding it to Ext.Viewport.
The height of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
By default, if this is not explicitly set, this Component's element will simply have its own natural size.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
Animation effect to apply when the Component is being hidden. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'. For more animations, check the Ext.fx.Animation.type config.
When using a modal Component, setting this to true
will hide the modal
mask and the Container when the mask is tapped on.
Overrides: Ext.Component.hideOnMaskTap
Optional HTML content to render inside this Component, or a reference to an existing element on the page.
Optional HTML content to render inside this Component, or a reference to an existing element on the page.
The unique id of this component instance.
It should not be necessary to use this configuration except for singleton objects in your application. Components created with an id may be accessed globally using Ext.getCmp.
Instead of using assigned ids, use the itemId config, and ComponentQuery which provides selector-based searching for Sencha Components analogous to DOM querying. The Ext.Container class contains shortcut methods to query its descendant Components by selector.
Note that this id will also be used as the element id for the containing HTML element that is rendered to the page for this component. This allows you to write id-based CSS rules to style the specific instance of this component uniquely, and also to select sub-elements using this component's id as the parent.
Note: to avoid complications imposed by a unique id also see itemId
.
Defaults to an auto-assigned id.
An additional CSS class to apply to items within the DataView.
An additional CSS class to apply to items within the DataView.
An itemId can be used as an alternative way to get a reference to a component when no object reference is
available. Instead of using an id
with Ext.getCmp, use itemId
with
Ext.Container.getComponent which will retrieve itemId
's or id's. Since itemId
's are an
index to the container's internal MixedCollection, the itemId
is scoped locally to the container - avoiding
potential conflicts with Ext.ComponentManager which requires a unique id
.
Also see id, Ext.Container.query, Ext.Container.down and Ext.Container.child.
The child items to add to this Container. This is usually an array of Component configurations or instances, for example:
Ext.create('Ext.Container', {
items: [
{
xtype: 'panel',
html: 'This is an item'
}
]
});
Defaults to: [{xtype: 'component'}]
Overrides: Ext.Container.items, Ext.dataview.component.DataItem.items
Configuration for this Container's layout. Example:
Ext.create('Ext.Container', {
layout: {
type: 'hbox',
align: 'middle'
},
items: [
{
xtype: 'panel',
flex: 1,
style: 'background-color: red;'
},
{
xtype: 'panel',
flex: 2,
style: 'background-color: green'
}
]
});
See the Layouts Guide for more information.
true
to automatically re-layout this component on orientation change.
true
to automatically re-layout this component on orientation change.
This cfg has been removed since 2.0.0
The absolute left position of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
Explicitly setting this value will make this Component become 'floating', which means its layout will no
longer be affected by the Container that it resides in.
A config object containing one or more event handlers to be added to this object during initialization. This
should be a valid listeners config
object as specified in the addListener example for attaching
multiple handlers at once.
See the Event guide for more
Note: It is bad practice to specify a listener's config
when you are defining a class using Ext.define()
.
Instead, only specify listeners when you are instantiating your class with Ext.create()
.
The margin to use on this Component. Can be specified as a number (in which case all edges get the same margin) or a CSS string like '5 10 10 10'
A configuration to allow you to mask this container.
You can optionally pass an object block with and xtype of loadmask
, and an optional message
value to
display a loading mask. Please refer to the Ext.LoadMask component to see other configurations.
masked: {
xtype: 'loadmask',
message: 'My message'
}
Alternatively, you can just call the setter at any time with true
/false
to show/hide the mask:
setMasked(true); //show the mask
setMasked(false); //hides the mask
There are also two convenient methods, mask and unmask, to allow you to mask and unmask this container at any time.
Remember, the Ext.Viewport is always a container, so if you want to mask your whole application at anytime, can call:
Ext.Viewport.setMasked({
xtype: 'loadmask',
message: 'Hello'
});
The maximum height of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
Note that this config will not apply if the Component is 'floating' (absolutely positioned or centered)
The maximum width of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
Note that this config will not apply if the Component is 'floating' (absolutely positioned or centered)
The minimum height of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
The minimum width of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
true
to make this Container modal. This will create a mask underneath the Container
that covers its parent and does not allow the user to interact with any other Components until this
Container is dismissed.
Overrides: Ext.Component.modal, Ext.Container.modal
true
to monitor Orientation change.
true
to monitor Orientation change.
This cfg has been removed since 2.0.0
The padding to use on this Component. Can be specified as a number (in which case all edges get the same padding) or a CSS string like '5 10 10 10'
An object or array of objects that will provide custom functionality for this component. The only requirement for a valid plugin is that it contain an init method that accepts a reference of type Ext.Component.
When a component is created, if any plugins are available, the component will call the init method on each plugin, passing a reference to itself. Each plugin can then call methods or respond to events on the component as needed to provide its functionality.
For examples of plugins, see Ext.plugin.PullRefresh and Ext.plugin.ListPaging
A plugin by alias:
Ext.create('Ext.dataview.List', {
config: {
plugins: 'listpaging',
itemTpl: '<div class="item">{title}</div>',
store: 'Items'
}
});
Multiple plugins by alias:
Ext.create('Ext.dataview.List', {
config: {
plugins: ['listpaging', 'pullrefresh'],
itemTpl: '<div class="item">{title}</div>',
store: 'Items'
}
});
Single plugin by class name with config options:
Ext.create('Ext.dataview.List', {
config: {
plugins: {
xclass: 'Ext.plugin.ListPaging', // Reference plugin by class
autoPaging: true
},
itemTpl: '<div class="item">{title}</div>',
store: 'Items'
}
});
Multiple plugins by class name with config options:
Ext.create('Ext.dataview.List', {
config: {
plugins: [
{
xclass: 'Ext.plugin.PullRefresh',
pullRefreshText: 'Pull to refresh...'
},
{
xclass: 'Ext.plugin.ListPaging',
autoPaging: true
}
],
itemTpl: '<div class="item">{title}</div>',
store: 'Items'
}
});
The model instance of this DataItem. It is controlled by the Component DataView.
Overrides: Ext.Component.record
Optional element to render this Component to. Usually this is not needed because a Component is normally full screen or automatically rendered inside another Container
The absolute right position of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
Explicitly setting this value will make this Component become 'floating', which means its layout will no
longer be affected by the Container that it resides in.
Configuration options to make this Container scrollable. Acceptable values are:
'horizontal'
, 'vertical'
, 'both'
to enabling scrolling for that direction.true
/false
to explicitly enable/disable scrolling.Alternatively, you can give it an object which is then passed to the scroller instance:
scrollable: {
direction: 'vertical',
directionLock: true
}
Please look at the Ext.scroll.Scroller documentation for more example on how to use this.
This cfg has been deprecated since 2.0.0
Please use the scrollable configuration.
The scroll view.
Overrides: Ext.Component.scroll
Configuration options to make this Container scrollable. Acceptable values are:
'horizontal'
, 'vertical'
, 'both'
to enabling scrolling for that direction.true
/false
to explicitly enable/disable scrolling.Alternatively, you can give it an object which is then passed to the scroller instance:
scrollable: {
direction: 'vertical',
directionLock: true
}
Please look at the Ext.scroll.Scroller documentation for more example on how to use this.
The scroll view.
Animation effect to apply when the Component is being shown. Typically you want to use an inbound animation type such as 'fadeIn' or 'slideIn'. For more animations, check the Ext.fx.Animation.type config.
true
to stop the event that fires when you click outside the floating component.
true
to stop the event that fires when you click outside the floating component.
This cfg has been removed since 2.0.0
Optional CSS styles that will be rendered into an inline style attribute when the Component is rendered.
You can pass either a string syntax:
style: 'background:red'
Or by using an object:
style: {
background: 'red'
}
When using the object syntax, you can define CSS Properties by using a string:
style: {
'border-left': '1px solid red'
}
Although the object syntax is much easier to read, we suggest you to use the string syntax for better performance.
The class that is added to the content target when you set styleHtmlContent
to true
.
Defaults to: "x-html"
true
to automatically style the HTML inside the content target of this component (body for panels).
Defaults to: false
The absolute top position of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
Explicitly setting this value will make this Component become 'floating', which means its layout will no
longer be affected by the Container that it resides in.
A String, Ext.Template, Ext.XTemplate or an Array of strings to form an Ext.XTemplate. Used in conjunction with the data and tplWriteMode configurations.
Note The data configuration must be set for any content to be shown in the component when using this configuration.
Overrides: Ext.Component.tpl
The Ext.(X)Template method to use when updating the content area of the Component. Valid modes are:
Defaults to: 'overwrite'
The width of this Component; must be a valid CSS length value, e.g: 300
, 100px
, 30%
, etc.
By default, if this is not explicitly set, this Component's element will simply have its own natural size.
If set to auto
, it will set the width to null
meaning it will have its own natural size.
Defaults to: '100%'
Overrides: Ext.Component.width
List of xtypes for Ext.Component. XTypes must not contain periods.
Ext.define('MyApp.CoolPanel', {
extend: 'Ext.panel.Panel',
xtype: 'coolpanel',
config: {
html : 'Yeah!'
}
});
// Using Ext.create
Ext.create('widget.coolpanel');
// Using the shorthand for widgets and in xtypes
Ext.widget('panel', {
items: [
{xtype: 'coolpanel', html: 'Foo'},
{xtype: 'coolpanel', html: 'Bar'}
]
});
The set of all items in this Container.
This property has been deprecated since 2.0.0
Please use getItems method instead.
Defaults to: /^(?:delegate|single|delay|buffer|args|prepend|element)$/
Overrides: Ext.mixin.Observable.listenerOptionsRegex
Defaults to: {id: 'traversable'}
Overrides: Ext.mixin.Observable.mixinConfig
Defaults to: 'component'
Overrides: Ext.mixin.Observable.observableType
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'
Creates new Component.
Overrides: Ext.Component.constructor, Ext.Container.constructor
Adds one or more Components to this Container. Example:
var myPanel = Ext.create('Ext.Panel', {
html: 'This will be added to a Container'
});
myContainer.add([myPanel]);
The new items to add to the Container.
The last item added to the Container from the newItems
array.
Appends an after-event handler.
Same as addListener with order
set to 'after'
.
The name of the event to listen for.
The method the event invokes.
The scope for fn
.
An object containing handler configuration.
Appends a before-event handler. Returning false
from the handler will stop the event.
Same as addListener with order
set to 'before'
.
The name of the event to listen for.
The method the event invokes.
The scope for fn
.
An object containing handler configuration.
Adds the specified events to the list of events which this Observable may fire.
This method has been deprecated since 2.0
It's no longer needed to add events before firing.
Appends an event handler to this object. You can review the available handlers by looking at the 'events' section of the documentation for the component you are working with.
Using the options argument, it is possible to combine different types of listeners:
A delayed, one-time listener:
container.addListener('tap', this.handleTap, this, {
single: true,
delay: 100
});
The method also allows for a single argument to be passed which is a config object containing properties which specify multiple events. For example:
container.addListener({
tap : this.onTap,
swipe: this.onSwipe,
scope: this // Important. Ensure "this" is correct during handler execution
});
One can also specify options for each event handler separately:
container.addListener({
tap : { fn: this.onTap, scope: this, single: true },
swipe: { fn: button.onSwipe, scope: button }
});
See the Events Guide for more.
The name of the event to listen for. May also be an object who's property names are event names.
The method the event invokes. Will be called with arguments given to
fireEvent plus the options
parameter described below.
The scope (this
reference) in which the handler function is executed. If
omitted, defaults to the object which fired the event.
An object containing handler configuration.
This object may contain any of the following properties:
The scope (this
reference) in which the handler function is executed. If omitted, defaults to the object
which fired the event.
The number of milliseconds to delay the invocation of the handler after the event fires.
true
to add a handler to handle just the next firing of the event, and then remove itself.
The order of when the listener should be added into the listener queue.
If you set an order of before
and the event you are listening to is preventable, you can return false
and it will stop the event.
Available options are before
, current
and after
.
Defaults to: current
Causes the handler to be delayed by the specified number of milliseconds. If the event fires again within that time, the original handler is not invoked, but the new handler is scheduled in its place.
Allows you to add a listener onto a element of this component using the elements reference.
Ext.create('Ext.Component', {
listeners: {
element: 'element',
tap: function() {
alert('element tap!');
}
}
});
All components have the element
reference, which is the outer most element of the component. Ext.Container also has the
innerElement
element which contains all children. In most cases element
is adequate.
Uses Ext.ComponentQuery to delegate events to a specified query selector within this item.
// Create a container with a two children; a button and a toolbar
var container = Ext.create('Ext.Container', {
items: [
{
xtype: 'toolbar',
docked: 'top',
title: 'My Toolbar'
},
{
xtype: 'button',
text: 'My Button'
}
]
});
container.addListener({
// Ext.Buttons have an xtype of 'button', so we use that are a selector for our delegate
delegate: 'button',
tap: function() {
alert('Button tapped!');
}
});
The order of when the listener should be added into the listener queue.
Possible values are before
, current
and after
.
Defaults to: 'current'
Adds listeners to any Observable object (or Element) which are automatically removed when this Component is destroyed.
This method has been deprecated since 2.0
All listeners are now automatically managed where necessary. Simply use addListener.
The item to which to add a listener/listeners.
The event name, or an object containing event name properties.
If the eventName
parameter was an event name, this is the handler function.
If the eventName
parameter was an event name, this is the scope in which
the handler function is executed.
If the eventName
parameter was an event name, this is the
addListener options.
Significantly improve instantiation time for Component with multiple references Ext.Element instance of the reference domNode is only created the very first time it's ever used.
Used to handle joining of a record to a tpl
Used to handle joining of a record to a tpl
Animates to the supplied activeItem
with a specified animation. Currently this only works
with a Card layout. This passed animation will override any default animations on the
container, for a single card switch. The animation will be destroyed when complete.
The item or item index to make active.
Card animation configuration or instance.
Changes the masked configuration when its setter is called, which will convert the value into a proper object/instance of Ext.Mask/Ext.LoadMask. If a mask already exists, it will use that instead.
Call the original method that was previously overridden with override,
This method is deprecated as callParent does the same thing.
Ext.define('My.Cat', {
constructor: function() {
alert("I'm a cat!");
}
});
My.Cat.override({
constructor: function() {
alert("I'm going to be a cat!");
var instance = this.callOverridden();
alert("Meeeeoooowwww");
return instance;
}
});
var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
// alerts "I'm a cat!"
// alerts "Meeeeoooowwww"
The arguments, either an array or the arguments
object
from the current method, for example: this.callOverridden(arguments)
Returns the result of calling the overridden 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.
The arguments, either an array or the arguments
object
from the current method, for example: this.callParent(arguments)
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 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', {
method: function () {
console.log('Bad');
// ... logic but with a bug ...
this.callParent();
}
});
To patch the bug in DerivedClass.method
, the typical solution is to create an
override:
Ext.define('App.paches.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".
The arguments, either an array or the arguments
object
from the current method, for example: this.callSuper(arguments)
Returns the result of calling the superclass method
Retrieves the first direct child of this container which matches the passed selector. The passed in selector must comply with an Ext.ComponentQuery selector.
An Ext.ComponentQuery selector.
Retrieves the first descendant of this container which matches the passed selector. The passed in selector must comply with an Ext.ComponentQuery selector.
An Ext.ComponentQuery selector.
Fires the specified event with the passed parameters and execute a function (action)
at the end if there are no listeners that return false
.
The name of the event to fire.
Arguments to pass to handers.
Action.
Scope of fn.
Fires the specified event with the passed parameters (minus the event name, plus the options
object passed
to addListener).
The first argument is the name of the event. Every other argument passed will be available when you listen for the event.
Firstly, we set up a listener for our new event.
this.on('myevent', function(arg1, arg2, arg3, arg4, options, e) {
console.log(arg1); // true
console.log(arg2); // 2
console.log(arg3); // { test: 'foo' }
console.log(arg4); // 14
console.log(options); // the options added when adding the listener
console.log(e); // the event object with information about the event
});
And then we can fire off the event.
this.fireEvent('myevent', true, 2, { test: 'foo' }, 14);
An event may be set to bubble up an Observable parent hierarchy by calling enableBubble.
The name of the event to fire.
Variable number of parameters are passed to handlers.
Returns false
if any of the handlers return false
.
Returns the Component for a given index in the Container's items.
The index of the Component to return.
The item at the specified index
, if found.
Examines this container's items
property
and gets a direct child component of this container.
This parameter may be any of the following:
itemId
or id
of the child component.items
property.For additional information see Ext.util.MixedCollection.get.
The component (if found).
Current Alignment information from the last alignTo call
Finds a docked item of this container using a reference, id
or an index
of its location
in getDockedItems.
The docked component, if found.
Returns all the Ext.Component.docked items in this container.
The docked items of this container.
Retrieves the top level element representing this component.
This method has been deprecated since 2.0.0
Please access the Component's element from the element
property instead, i.e:
var element = component.element;
Overrides: Ext.Component.getElementConfig
Returns the value of enterAnimation.
This method has been deprecated since 2.0.0
Please use showAnimation instead.
Returns the value of exitAnimation.
This method has been deprecated since 2.0.0
Please use hideAnimation instead. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'.
Retrieves the id of this component. Will autogenerate an id if one has not already been set.
id
Returns the parent of this component, if it has one.
The parent of this component.
Used by ComponentQuery to retrieve all of the items
which can potentially be considered a child of this Container.
This should be overridden by components which have child items
that are not contained in items. For example dockedItems
, menu
, etc
Returns an the scrollable instance for this container, which is a Ext.scroll.View class.
Please checkout the documentation for Ext.scroll.View, Ext.scroll.View.getScroller and Ext.scroll.Scroller for more information.
The scroll view.
Returns this Component's xtype hierarchy as a slash-delimited string. For a list of all available xtypes, see the Ext.Component header.
Note: If using your own subclasses, be aware that a Component must register its own xtype to participate in determination of inherited xtypes.
Example usage:
var t = new Ext.field.Text();
alert(t.getXTypes()); // alerts 'component/field/textfield'
The xtype hierarchy string.
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'
mixins The mixin prototypes as key - value pairs
Allows addition of behavior to the rendering phase.
This is a template method. a hook into the functionality of this class. Feel free to override it in child classes.
Overrides: Ext.Evented.initialize, Ext.Component.initialize, Ext.picker.Picker.initialize
Adds a child Component at the given index. For example, here's how we can add a new item, making it the first child Component of this Container:
myContainer.insert(0, {xtype: 'panel', html: 'new item'});
Returns true
if this Component is currently disabled.
true
if currently disabled.
Tests whether or not this Component is of a specific xtype. This can test whether this Component is descended
from the xtype (default) or whether it is directly of the xtype specified (shallow = true
).
If using your own subclasses, be aware that a Component must register its own xtype
to participate in determination of inherited xtypes.
For a list of all available xtypes, see the Ext.Component header.
Example usage:
var t = new Ext.field.Text();
var isText = t.isXType('textfield'); // true
var isBoxSubclass = t.isXType('field'); // true, descended from Ext.field.Field
var isBoxInstance = t.isXType('field', true); // false, not a direct Ext.field.Field instance
The xtype to check for this Component.
false
to check whether this Component is descended from the xtype (this is
the default), or true
to check whether this Component is directly of the specified xtype.
true
if this component descends from the specified xtype, false
otherwise.
Alias for addManagedListener.
This method has been deprecated since 2.0.0
This is now done automatically
The item to which to add a listener/listeners.
The event name, or an object containing event name properties.
If the eventName
parameter was an event name, this is the handler function.
If the eventName
parameter was an event name, this is the scope in which
the handler function is executed.
If the eventName
parameter was an event name, this is the
addListener options.
Alias for removeManagedListener.
This method has been deprecated since 2.0.0
This is now done automatically
The item to which to add a listener/listeners.
The event name, or an object containing event name properties.
If the eventName
parameter was an event name, this is the handler function.
If the eventName
parameter was an event name, this is the scope in which
the handler function is executed.
Alias for addListener.
The name of the event to listen for. May also be an object who's property names are event names.
The method the event invokes. Will be called with arguments given to
fireEvent plus the options
parameter described below.
The scope (this
reference) in which the handler function is executed. If
omitted, defaults to the object which fired the event.
An object containing handler configuration.
This object may contain any of the following properties:
The scope (this
reference) in which the handler function is executed. If omitted, defaults to the object
which fired the event.
The number of milliseconds to delay the invocation of the handler after the event fires.
true
to add a handler to handle just the next firing of the event, and then remove itself.
The order of when the listener should be added into the listener queue.
If you set an order of before
and the event you are listening to is preventable, you can return false
and it will stop the event.
Available options are before
, current
and after
.
Defaults to: current
Causes the handler to be delayed by the specified number of milliseconds. If the event fires again within that time, the original handler is not invoked, but the new handler is scheduled in its place.
Allows you to add a listener onto a element of this component using the elements reference.
Ext.create('Ext.Component', {
listeners: {
element: 'element',
tap: function() {
alert('element tap!');
}
}
});
All components have the element
reference, which is the outer most element of the component. Ext.Container also has the
innerElement
element which contains all children. In most cases element
is adequate.
Uses Ext.ComponentQuery to delegate events to a specified query selector within this item.
// Create a container with a two children; a button and a toolbar
var container = Ext.create('Ext.Container', {
items: [
{
xtype: 'toolbar',
docked: 'top',
title: 'My Toolbar'
},
{
xtype: 'button',
text: 'My Button'
}
]
});
container.addListener({
// Ext.Buttons have an xtype of 'button', so we use that are a selector for our delegate
delegate: 'button',
tap: function() {
alert('Button tapped!');
}
});
The order of when the listener should be added into the listener queue.
Possible values are before
, current
and after
.
Defaults to: 'current'
Initialize layout and event listeners the very first time an item is added
Retrieves all descendant components which match the passed selector. Executes an Ext.ComponentQuery.query using this container as its root.
Selector complying to an Ext.ComponentQuery selector.
Ext.Component's which matched the selector.
Removes an item from this Container, optionally destroying it.
The item to remove.
Calls the Component's destroy
method if true
.
this
Removes a before-event handler.
Same as removeListener with order
set to 'after'
.
The name of the event the handler was associated with.
The handler to remove.
The scope originally specified for fn
.
Extra options object.
Removes all items currently in the Container, optionally destroying them all.
If true
, destroys
each removed Component.
If true
, completely remove all items including
docked / centered and floating items.
this
Removes the Component at the specified index:
myContainer.removeAt(0); // removes the first item
The index of the Component to remove.
this
Removes a before-event handler.
Same as removeListener with order
set to 'before'
.
The name of the event the handler was associated with.
The handler to remove.
The scope originally specified for fn
.
Extra options object.
Removes a docked item from this Container.
This method has been deprecated since 2.0.0
Please use remove instead.
this
Removes an inner Component at the specified index:
myContainer.removeInnerAt(0); // removes the first item of the innerItems property
The index of the Component to remove.
this
Removes an event handler.
The type of event the handler was associated with.
The handler to remove. This must be a reference to the function passed into the addListener call.
The scope originally specified for the handler. It must be the same as the scope argument specified in the original call to addListener or the listener will not be removed.
Extra options object. See addListener for details.
The order of the listener to remove.
Possible values are before
, current
and after
.
Defaults to: 'current'
Adds listeners to any Observable object (or Element) which are automatically removed when this Component is destroyed.
This method has been deprecated since 2.0
All listeners are now automatically managed where necessary. Simply use removeListener.
The item to which to add a listener/listeners.
The event name, or an object containing event name properties.
If the eventName
parameter was an event name, this is the handler function.
If the eventName
parameter was an event name, this is the scope in which
the handler function is executed.
Replaces specified classes with the newly specified classes. It uses the addCls and removeCls methods, so if the class(es) you are removing don't exist, it will still add the new classes.
The class(es) to remove.
The class(es) to add.
Optional prefix to prepend before each class.
Defaults to: ""
Optional suffix to append to each class.
Defaults to: ""
Resumes firing events (see suspendEvents).
Pass as true to discard any queued events.
Sets the value of baseCls.
Overrides: Ext.dataview.component.DataItem.setBaseCls
Sets the value of dataMap.
Overrides: Ext.dataview.component.DataItem.setDataMap
Sets the value of defaultType.
Overrides: Ext.Container.setDefaultType
Sets the value of enterAnimation.
This method has been deprecated since 2.0.0
Please use showAnimation instead.
Sets the value of exitAnimation.
This method has been deprecated since 2.0.0
Please use hideAnimation instead. Typically you want to use an outbound animation type such as 'fadeOut' or 'slideOut'.
Sets the value of items.
Overrides: Ext.dataview.component.DataItem.setItems
Sets the value of scrollable.
The scroll view.
Overrides: Ext.Component.setScrollable
Shows this component optionally using an animation.
Overrides: Ext.Component.show, Ext.Container.show
Shows this component by another component. If you specify no alignment, it will automatically position this component relative to the reference component.
For example, say we are aligning a Panel next to a Button, the alignment string would look like this:
[panel-vertical (t/b/c)][panel-horizontal (l/r/c)]-[button-vertical (t/b/c)][button-horizontal (l/r/c)]
where t = top, b = bottom, c = center, l = left, r = right.
tl-tr
means top-left corner of the Panel to the top-right corner of the Buttontc-bc
means top-center of the Panel to the bottom-center of the ButtonYou can put a '?' at the end of the alignment string to constrain the floating element to the Viewport
// show `panel` by `button` using the default positioning (auto fit)
panel.showBy(button);
// align the top left corner of `panel` with the top right corner of `button` (constrained to viewport)
panel.showBy(button, "tl-tr?");
// align the bottom right corner of `panel` with the center left edge of `button` (not constrained by viewport)
panel.showBy(button, "br-cl");
The target component to show this component by.
The specific alignment.
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
Suspends the firing of all events.
All events will be queued but you can discard the queued events by passing false in the resumeEvents call
Add or removes a class based on if the class is already added to the Component.
The class to toggle.
this
Alias for removeListener.
The type of event the handler was associated with.
The handler to remove. This must be a reference to the function passed into the addListener call.
The scope originally specified for the handler. It must be the same as the scope argument specified in the original call to addListener or the listener will not be removed.
Extra options object. See addListener for details.
The order of the listener to remove.
Possible values are before
, current
and after
.
Defaults to: 'current'
Walks up the ownerCt
axis looking for an ancestor Container which matches
the passed simple selector.
Example:
var owningTabPanel = grid.up('tabpanel');
The simple selector to test.
The matching ancestor Container (or undefined
if no match was found).
Updates this container's child items, passing through the dataMap
.
Overrides: Ext.dataview.component.DataItem.updateRecord
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();
Add / override static properties of this class.
Ext.define('My.cool.Class', {
// this.se
});
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() { ... };
});
this
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 '$$$$$$$'
The class to borrow members from
The names of the members to borrow
this
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.
the created instance.
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()
The new method name, or an object to set multiple aliases. See flexSetter
The original method name
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'
className
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!");
var instance = this.callParent(arguments);
alert("Meeeeoooowwww");
return instance;
}
});
var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
// alerts "I'm a cat!"
// alerts "Meeeeoooowwww"
As of 2.1, direct use of this method is deprecated. Use Ext.define instead:
Ext.define('My.CatOverride', {
override: 'My.Cat',
constructor: function() {
alert("I'm going to be a cat!");
var instance = this.callParent(arguments);
alert("Meeeeoooowwww");
return instance;
}
});
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).
This method has been deprecated since 2.1.0
Please use Ext.define instead
The properties to add to this class. This should be specified as an object literal containing one or more properties.
this class
Fires whenever item within the Container is activated.
The new active item within the container.
The Container instance.
The old active item within the container.
The options object passed to Ext.util.Observable.addListener.
Fires when the activeItem configuration is changed by setActiveItem.
The Ext.Container instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever item added to the Container.
The Container instance.
The item added to the Container.
The index of the item within the Container.
The options object passed to Ext.util.Observable.addListener.
Fires before orientation changes.
This event has been removed since 2.0.0
This event is now only available onBefore
the Viewport's Ext.Viewport.orientationchange
The options object passed to Ext.util.Observable.addListener.
Fires when the bottom configuration is changed by setBottom.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the centered configuration is changed by setCentered.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever item within the Container is deactivated.
The old active item within the container.
The Container instance.
The new active item within the container.
The options object passed to Ext.util.Observable.addListener.
Fires when the component is destroyed
The options object passed to Ext.util.Observable.addListener.
Fires when the disabled configuration is changed by setDisabled.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the docked configuration is changed by setDocked.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the component is no longer displayed in the DOM. Listening to this event will degrade performance not recommend for general use.
The component instance
The options object passed to Ext.util.Observable.addListener.
Fires when the flex configuration is changed by setFlex.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever there is a change in the floating status of a component
The component instance
The component's new floating state
The options object passed to Ext.util.Observable.addListener.
Fires whenever a Component with the fullscreen config is instantiated
The component instance
The options object passed to Ext.util.Observable.addListener.
Fires when the height configuration is changed by setHeight.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever the Component is hidden
The component instance
The options object passed to Ext.util.Observable.addListener.
Fires when the component has been initialized
The component instance
The options object passed to Ext.util.Observable.addListener.
Fires when the left configuration is changed by setLeft.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the maxHeight configuration is changed by setMaxHeight.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the maxWidth configuration is changed by setMaxWidth.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the minHeight configuration is changed by setMinHeight.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the minWidth configuration is changed by setMinWidth.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever item moved within the Container.
The Container instance.
The item moved within the Container.
The new index of the item.
The old index of the item.
The options object passed to Ext.util.Observable.addListener.
Fires when orientation changes.
This event has been removed since 2.0.0
This event is now only available on the Viewport's Ext.Viewport.orientationchange
The options object passed to Ext.util.Observable.addListener.
Fires whenever this Element actually becomes visible (painted) on the screen. This is useful when you need to perform 'read' operations on the DOM element, i.e: calculating natural sizes and positioning.
Note: This event is not available to be used with event delegation. Instead painted
only fires if you explicitly
add at least one listener to it, for performance reasons.
The component's outer element (this.element)
The options object passed to Ext.util.Observable.addListener.
Fires whenever item removed from the Container.
The Container instance.
The item removed from the Container.
The index of the item that was removed.
The options object passed to Ext.util.Observable.addListener.
Fires whenever an item is rendered into a container or derendered from a Container.
The Container instance.
The item in the Container.
The current rendered status of the item.
The options object passed to Ext.util.Observable.addListener.
Important note: For the best performance on mobile devices, use this only when you absolutely need to monitor a Element's size.
Note: This event is not available to be used with event delegation. Instead resize
only fires if you explicitly
add at least one listener to it, for performance reasons.
The component's outer element (this.element)
The options object passed to Ext.util.Observable.addListener.
Fires when the right configuration is changed by setRight.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires when the scrollable configuration is changed by setScrollable.
The Ext.Container instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
The scroll view.
Fires whenever the Component is shown
The component instance
The options object passed to Ext.util.Observable.addListener.
Fires when the top configuration is changed by setTop.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.
Fires whenever the data of the DataItem is updated.
The DataItem instance.
The new data.
The options object passed to Ext.util.Observable.addListener.
Overrides: Ext.dataview.component.DataItem.updatedata
Fires when the width configuration is changed by setWidth.
The Ext.Component instance.
The new value being set.
The existing value.
The options object passed to Ext.util.Observable.addListener.