Hierarchy
Ext.BaseExt.util.CollectionExt.data.ErrorsInherited mixins
Requires
Files
Wraps a collection of validation error responses and provides convenient functions for accessing and errors for specific fields.
Usually this class does not need to be instantiated directly - instances are instead created automatically when validate on a model instance:
//validate some existing model instance - in this case it returned two failures messages
var errors = myModel.validate();
errors.isValid(); // false
errors.length; // 2
errors.getByField('name'); // [{field: 'name', message: 'must be present'}]
errors.getByField('title'); // [{field: 'title', message: 'is too short'}]
The default sort direction to use if one is not specified.
Defaults to: "ASC"
The root inside each item in which the properties exist that we want to filter on. This is useful for filtering records in which the data exists inside a 'data' property.
Array of Filters for this collection.
Array of Filters for this collection.
Overrides: Ext.mixin.Filterable.filters
The root inside each item in which the properties exist that we want to sort on.
This is useful for sorting records in which the data exists inside a data
property.
Array of Sorters for this collection.
Array of Sorters for this collection.
Overrides: Ext.mixin.Sortable.sorters
An array containing all the items (unsorted, unfiltered)
Defaults to: []
This is the cached sorting function which is a generated function that calls all the configured sorters in the correct order.
Overrides: Ext.mixin.Filterable.currentSortFn
A flag indicating whether the currently cashed filter function is still valid.
Defaults to: false
A flag indicating whether the currently cashed sort function is still valid.
Defaults to: false
A read-only flag indicating if this object is filtered.
Defaults to: false
An object used as map to get a sorted and filtered index of an item
Defaults to: {}
An array containing the filtered items (sorted)
Defaults to: []
An array containing all the filtered keys (sorted)
Defaults to: []
The count of items in the collection filtered and sorted
Defaults to: 0
An object used as map to get an object based on its key
Defaults to: {}
Defaults to: {id: 'sortable'}
Overrides: Ext.mixin.Filterable.mixinConfig
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'
Adds an item to the collection.
The item added.
Overrides: Ext.util.Collection.add
Adds all elements of an Array or an Object to the collection.
An Object containing properties which will be added to the collection, or an Array of
values, each of which are added to the collection. Functions references will be added to the collection if {@link}
Ext.util.MixedCollection.allowFunctions allowFunctions} has been set to true
.
This method adds a filter.
Can be an instance of Ext.util.Filter, an object representing an Ext.util.Filter configuration, or a filter function.
This method adds all the filters in a passed array.
Overrides: Ext.mixin.Filterable.addFilters
This method adds a sorter.
Can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.
The default direction for each sorter in the array. Defaults to the value of defaultSortDirection. Can be either 'ASC' or 'DESC'.
This method adds all the sorters in a passed array.
An array with sorters. A sorter can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.
The default direction for each sorter in the array. Defaults to the value of defaultSortDirection. Can be either 'ASC' or 'DESC'.
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
Removes all items from the collection. Fires the clear event when complete.
Executes the specified function once for every item in the collection.
The function should return a Boolean value. Returning false
from the function will stop the iteration.
Executes the specified function once for every key in the collection, passing each key, and its associated item as the first two parameters.
Filter by a function. Returns a new collection that has been filtered. The passed function will be called with
each object in the collection. If the function returns true
, the value is included otherwise it is filtered.
The scope (this
reference) in which the function is executed. Defaults to this
MixedCollection.
The new filtered collection
Returns the first item in the collection which elicits a true
return value from the passed selection function.
The selection function to execute for each item.
The scope (this
reference) in which the function is executed. Defaults to the browser
window.
The first item in the collection which returned true
from the selection function.
Find the index of the first matching object in this collection by a function. If the function returns true
it
is considered a match.
The scope (this
reference) in which the function is executed. Defaults to this
MixedCollection.
The index to start searching at.
Defaults to: 0
The matched index, or -1 if the item was not found.
This method returns the index that a given item would be inserted into a given array based on the current sorters.
The array that you want to insert the item into.
The item that you want to insert into the items array.
The index for the given item in the given array based on the current sorters.
Returns the item associated with the passed key OR index. Key has priority over index. This is the equivalent of calling getByKey first, then if nothing matched calling getAt.
If the item is found, returns the item. If the item was not found, returns undefined
. If an item
was found, but is a Class, returns null
.
MixedCollection has a generic way to fetch keys if you implement getKey. The default implementation simply
returns item.id
but you can provide your own implementation to return a different value as in the following
examples:
// normal way
var mc = new Ext.util.MixedCollection();
mc.add(someEl.dom.id, someEl);
mc.add(otherEl.dom.id, otherEl);
//and so on
// using getKey
var mc = new Ext.util.MixedCollection();
mc.getKey = function(el){
return el.dom.id;
};
mc.add(someEl);
mc.add(otherEl);
// or via the constructor
var mc = new Ext.util.MixedCollection(false, function(el){
return el.dom.id;
});
mc.add(someEl);
mc.add(otherEl);
The item for which to find the key.
The key for the passed item.
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
Inserts an item at the specified index in the collection. Fires the add event when complete.
The index to insert the item at.
The key to associate with the new item, or the item itself.
If the second parameter was a key, the new item.
The item inserted.
This method adds a filter at a given index.
The index at which to insert the filter.
Can be an instance of Ext.util.Filter, an object representing an Ext.util.Filter configuration, or a filter function.
This method inserts all the filters in the passed array at the given index.
The index at which to insert the filters.
Each filter can be an instance of Ext.util.Filter, an object representing an Ext.util.Filter configuration, or a filter function.
This method adds a sorter at a given index.
The index at which to insert the sorter.
Can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.
The default direction for each sorter in the array. Defaults to the value of defaultSortDirection. Can be either 'ASC' or 'DESC'.
This method inserts all the sorters in the passed array at the given index.
Overrides: Ext.mixin.Sortable.insertSorters
Remove all items in the passed array from the collection.
An array of items to be removed.
this object
This method removes all the filters in a passed array.
Overrides: Ext.mixin.Filterable.removeFilters
This method removes a sorter.
Can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.
This method removes all the sorters in a passed array.
Overrides: Ext.mixin.Sortable.removeSorters
Replaces an item in the collection. Fires the replace event when complete.
The key associated with the item to replace, or the replacement item.
If you supplied a getKey implementation for this MixedCollection, or if the key of your stored items is in a property called id, then the MixedCollection will be able to derive the key of the replacement item. If you want to replace an item with one having the same key value, then just pass the replacement item in this parameter.
{Object} item (optional) If the first parameter passed was a key, the item to associate with that key.
The new item.
This method will sort an array based on the currently configured sorters.
The array you passed after it is sorted.
Overrides: Ext.mixin.Sortable.sort
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
This updates the cached sortFn based on the current sorters.
sortFn The generated sort function.
This updates the cached sortFn based on the current sorters.
The generated sort function.
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