Alternate names
Ext.lib.ComponentHierarchy
Ext.BaseExt.EventedExt.AbstractComponentExt.ComponentMixins
Inherited mixins
Requires
Subclasses
Files
Most of the visual classes you interact with in Sencha Touch are Components. Every Component in Sencha Touch is a subclass of Ext.Component, which means they can all:
They can also do a few more advanced things:
There are many components available in Sencha Touch, separated into 4 main groups:
Components are created the same way as all other classes in Sencha Touch - using Ext.create. Here's how we can create a Text field:
var panel = Ext.create('Ext.Panel', {
html: 'This is my panel'
});
This will create a Panel instance, configured with some basic HTML content. A Panel is just a simple Component that can render HTML and also contain other items. In this case we've created a Panel instance but it won't show up on the screen yet because items are not rendered immediately after being instantiated. This allows us to create some components and move them around before rendering and laying them out, which is a good deal faster than moving them after rendering.
To show this panel on the screen now we can simply add it to the global Viewport:
Ext.Viewport.add(panel);
Panels are also Containers, which means they can contain other Components, arranged by a layout. Let's revisit the above example now, this time creating a panel with two child Components and a hbox layout:
var panel = Ext.create('Ext.Panel', {
layout: 'hbox',
items: [
{
xtype: 'panel',
flex: 1,
html: 'Left Panel, 1/3rd of total size',
style: 'background-color: #5E99CC;'
},
{
xtype: 'panel',
flex: 2,
html: 'Right Panel, 2/3rds of total size',
style: 'background-color: #759E60;'
}
]
});
Ext.Viewport.add(panel);
This time we created 3 Panels - the first one is created just as before but the inner two are declared inline using an xtype. Xtype is a convenient way of creating Components without having to go through the process of using Ext.create and specifying the full class name, instead you can just provide the xtype for the class inside an object and the framework will create the components for you.
We also specified a layout for the top level panel - in this case hbox, which splits the horizontal width of the
parent panel based on the 'flex' of each child. For example, if the parent Panel above is 300px wide then the first
child will be flexed to 100px wide and the second to 200px because the first one was given flex: 1
and the second
flex: 2
.
xtype is an easy way to create Components without using the full class name. This is especially useful when creating
a Container that contains child Components. An xtype is simply a shorthand way of specifying a
Component - for example you can use xtype: 'panel'
instead of typing out Ext.panel.Panel.
Sample usage:
Ext.create('Ext.Container', {
fullscreen: true,
layout: 'fit',
items: [
{
xtype: 'panel',
html: 'This panel is created by xtype'
},
{
xtype: 'toolbar',
title: 'So is the toolbar',
docked: 'top'
}
]
});
These are the xtypes that are most commonly used. For an exhaustive list please see the Components Guide.
xtype Class ----------------- --------------------- actionsheet Ext.ActionSheet audio Ext.Audio button Ext.Button image Ext.Img label Ext.Label loadmask Ext.LoadMask map Ext.Map panel Ext.Panel segmentedbutton Ext.SegmentedButton sheet Ext.Sheet spacer Ext.Spacer titlebar Ext.TitleBar toolbar Ext.Toolbar video Ext.Video carousel Ext.carousel.Carousel navigationview Ext.navigation.View datepicker Ext.picker.Date picker Ext.picker.Picker slider Ext.slider.Slider thumb Ext.slider.Thumb tabpanel Ext.tab.Panel viewport Ext.viewport.Default DataView Components --------------------------------------------- dataview Ext.dataview.DataView list Ext.dataview.List nestedlist Ext.dataview.NestedList Form Components --------------------------------------------- checkboxfield Ext.field.Checkbox datepickerfield Ext.field.DatePicker emailfield Ext.field.Email hiddenfield Ext.field.Hidden numberfield Ext.field.Number passwordfield Ext.field.Password radiofield Ext.field.Radio searchfield Ext.field.Search selectfield Ext.field.Select sliderfield Ext.field.Slider spinnerfield Ext.field.Spinner textfield Ext.field.Text textareafield Ext.field.TextArea togglefield Ext.field.Toggle urlfield Ext.field.Url fieldset Ext.form.FieldSet formpanel Ext.form.Panel
Whenever you create a new Component you can pass in configuration options. All of the configurations for a given Component are listed in the "Config options" section of its class docs page. You can pass in any number of configuration options when you instantiate the Component, and modify any of them at any point later. For example, we can easily modify the html content of a Panel after creating it:
// we can configure the HTML when we instantiate the Component
var panel = Ext.create('Ext.Panel', {
fullscreen: true,
html: 'This is a Panel'
});
// we can update the HTML later using the setHtml method:
panel.setHtml('Some new HTML');
// we can retrieve the current HTML using the getHtml method:
Ext.Msg.alert(panel.getHtml()); // displays "Some new HTML"
Every config has a getter method and a setter method - these are automatically generated and always follow the same
pattern. For example, a config called html
will receive getHtml
and setHtml
methods, a config called defaultType
will receive getDefaultType
and setDefaultType
methods, and so on.
See the Component & Container Guide for more information, and check out the Ext.Container class docs also.
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.
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.
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.
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.
This configuration has moved to Ext.Container. You can no longer use it in a Ext.Component.
This cfg has been removed since 2.0.0
This method has been moved from Ext.Component to Ext.Container
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 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.
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'
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.
This configuration has moved to Ext.Container. You can no longer use it in a Ext.Component.
This cfg has been removed since 2.0.0
This method has been moved from Ext.Component to Ext.Container
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'
}
});
A model instance which updates the Component's html based on it's tpl. Similar to the data configuration, but tied to to a record to make allow dynamic updates. This must be a model instance and not a configuration of one.
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.
This configuration has moved to Ext.Container. You can no longer use it in a Ext.Component.
This cfg has been removed since 2.0.0
This method has been moved from Ext.Component to Ext.Container
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.
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.
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'}
]
});
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.
The standard configuration object.
Overrides: Ext.Evented.constructor, Ext.Component.constructor, Ext.draw.Surface.constructor
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
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
Destroys this Component. If it is currently added to a Container it will first be removed from that Container. All Ext.Element references are also deleted and the Component is de-registered from Ext.ComponentManager
Overrides: Ext.Base.destroy, Ext.Component.destroy
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
.
Current Alignment information from the last alignTo call
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;
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.
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.
Hides this Component optionally using an animation.
You can specify an animation here or a bool to use the hideAnimation config.
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
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'
Convert old properties in data into a config object
Overrides: Ext.mixin.Mixin.onClassExtended
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 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 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 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'.
This method has moved to Ext.Container. You can no longer use it in a Ext.Component.
This method has been removed since 2.0.0
This method has been moved from Ext.Component to Ext.Container
Shows this component optionally using an animation.
You can specify an animation here or a bool to use the showAnimation config.
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).
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 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 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 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.
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 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 component is updated
The component instance
The new data
The options object passed to Ext.util.Observable.addListener.
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.