Hierarchy
Ext.BaseExt.data.AbstractStoreMixins
Requires
Subclasses
Files
AbstractStore是Ext.data.Store和Ext.data.TreeStore的父类. 它作为抽象类从不会被直接使用, 但它为这两个子类 提供了一套函数.
我们出于参考的目的, 把此类写进了此文档中, 但是除非你打算创建一个全新的Store类型, 否则你可能只需要看Ext.data.Store即可. 但是如果你有兴趣, 这里有一些对于AbstractStore究竟是何物的简单说明.
AbstractStore提供了一个Store所需的任何能够想到的基础属性. 我们预计需要提供一个Model对象来描述Store中数据 的类型. 还预计需要提供一个Proxy对象来处理Store中数据的加载.
AbstractStore提供了一些有用的方法, 例如load和sync, 通过将请求参数对象传递给配置的proxy, 分别实现了数据的加载和保存. 两个内置Store子类都为这些方法添加了额外的实现. 需要注意的是AbstractStore的各子类都有各自存储数据的方式 - 像Ext.data.Store中数据以扁平的MixedCollection集合来存储数据, 而在 TreeStore中我们使用了Ext.data.Tree来维护数据的层次关系.
本类还提供了过滤和排序支持. 过滤/排序可以由客户端进行, 也可以完全在服务器端完成. 这可以通过remoteSort 和remoteFilter参数来控制. 更多信息参见sort和filter方法.
如果data属性未定义, 并且autoLoad值为'true'或对象, 则此store的load方法将在创建后自动执行. 如果autoLoad值是一个对象, 这个对象将 作为参数传递给load方法. 默认为'false'.
此参数可以用来代替model参数. fields值应该是一个Ext.data.Field属性对象的集合. store对象将 自动使用此参数的值来创建一个Ext.data.Model数据模型. 通常应该避免使用此参数, 它只是为了向下兼容而存在. 对于任何稍复杂的情况, 比如制定一个特定的ID或关联关系, 都应该定义一个Ext.data.Model模型对象并通过 model参数指定给当前store.
一个配置对象,包含一个或多个事件处理函数,在对象初始化时添加到对象。 它应该是addListener指定的一个有效的监听器配置对象, 一次添加多个事件处理函数。
Ext JS 组建的DOM事件
虽然一些Ext JS组件类输出选定的DOM事件(例如"click"、"mouseover"等),
但是这只能通过添加额外的值(如果能)。例如,DataView的itemclick
传递被单击的节点。为了通过Component的子元素直接访问DOM事件,
我们需要指定element
选项来标识要
添加DOM监听器的Component属性:
new Ext.panel.Panel({
width: 400,
height: 200,
dockedItems: [{
xtype: 'toolbar'
}],
listeners: {
click: {
element: 'el', //bind to the underlying el property on the panel
fn: function(){ console.log('click el'); }
},
dblclick: {
element: 'body', //bind to the underlying body property on the panel
fn: function(){ console.log('dblclick body'); }
}
}
});
当前store对象的Model数据模型的名称. 此字符串将作为一个参数来调用Ext.ModelManager.getModel.
此Store使用的Proxy数据代理对象. 此参数可以为一个字符串, 一个属性对象或一个Proxy实例 - 详情参见setProxy
当前store对象的唯一标识ID. 当此值存在时, 当前Store将被注册到Ext.data.StoreManager中, 从而可以在别处轻松创建.
注意当sotre对象是由Controller进行实例化时, storeId值将被store的名称覆盖.
扩展事件
Defaults to: []
设置更新操作为批量同步更新. 'operation'(默认)表示Store的内部数据会在批处理的每次操作完成后更新, 'complete'表示Store的数据 会等到整个批处理全部完成后再更新. 在使用本地数据代理时选择'complete'比较合适, 而'operation'更适用于相对延时较高的远程代理.
Defaults to: "operation"
默认的Proxy代理对象字符串类型. 默认值为创建一个Memory内存代理.
Defaults to: "memory"
默认的排序方向
Defaults to: "ASC"
'true'表示此Store所有附属的过滤器都会在加载数据之后, datachanged事件触发之前执行. 默认为'true', 当 remoteFilter为'true'时此参数被忽略.
Defaults to: true
本对象包含任何有监听器的事件的键。监听器可以在实例上直接设置, 或者在其类或者父类(通过observe) 或者在MVC EventBus上设置。本对象的值为真 (一个非零的数字)和假(0或者undefined)。它们并不代表确切的监听器数量。 如果事件必须被触发,它的值是真的, 如果没有必要,就是假的。
本属性的设计目的是避免没有监听器时调用fireEvent的开销。 如果fireEvent要调用成百上千次,这尤其有用。 用法:
if (this.hasListeners.foo) {
this.fireEvent('foo', this, arg1);
}
'true'表示model模型对象将由Store内部创建. 这种情况发生在使用fields数组而不是model对象或名称来创建Store时.
Defaults to: false
'true'表示Store已被销毁. 如果此值为true, 所有对当前Store的引用都应被删除, 因为此时所有的方法都已经不再保证能够正确执行.
Defaults to: false
在本类中设置为true
将一个对象标识为实例化的Observable或其子类。
Defaults to: true
设置为true
将某个对象标识为实例化的Sortable或其子类。
Defaults to: true
一组默认值, 将被应用到所有通过insert添加或create创建的数据实例中. 此参数由关联模型在内部使用, 用来为外键和其他字段赋值. 可在Association类源码中查看相关示例. 应用程序开发人员通常不需要使用此参数.
被删除的数据实例的临时缓存, 直到Proxy成功执行同步后清空.
Defaults to: []
本身
获取当前类的引用,此对象被实例化。不同于 statics,
this.self
是依赖范围,它意味着要使用动态继承。
参见 statics 详细对比
Ext.define('My.Cat', {
statics: {
speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
},
constructor: function() {
alert(this.self.speciesName); // 依赖 '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'
'true'表示此Store所有排序都会在加载数据之后, datachanged事件触发之前执行. 默认为'true', 当 remoteSort为'true'时此参数被忽略.
Defaults to: true
成员
向本对象添加一个事件处理函数,例如:
myGridPanel.on("mouseover", this.onMouseOver, this);
这个方法也允许传递单个参数,参数为一个 包含指定多个事件的属性的配置对象。例如:
myGridPanel.on({
cellClick: this.onCellClick,
mouseover: this.onMouseOver,
mouseout: this.onMouseOut,
scope: this // Important. Ensure "this" is correct during handler execution
});
你也能为每个事件处理函数单独指定选项:
myGridPanel.on({
cellClick: {fn: this.onCellClick, scope: this, single: true},
mouseover: {fn: panel.onMouseOver, scope: panel}
});
也能使用在特定作用域的方法名。注意
必须指定scope
:
myGridPanel.on({
cellClick: {fn: 'onCellClick', scope: this, single: true},
mouseover: {fn: 'onMouseOver', scope: panel}
});
被监听的事件名。 也可以是属性名字是事件名字的对象。
事件调用的方法, 或者如果指定了scope
,在指定scope
的方法名*。
会被调用,
参数为fireEvent的参数加上下述options
参数。
事件处理函数执行的作用域(this
应用的上下文)
如果省略, 默认为触发事件的对象。
包含事件处理函数配置的对象。
注意: 不像ExtJS 3.x, options对象也会作为最后一个参数 传递给每一个事件处理函数。
这个对象可能包含以下任何一个属性:
事件处理函数执行的作用域(this
应用的上下文)
如果省略, 默认为触发事件的对象。
事件触发后,调用事件处理函数延时毫秒数。
设置为true添加一个事件处理函数,只处理下一次触发的事件, 然后移除这个函数。
使事件处理函数在Ext.util.DelayedTask中调度运行, 延时指定的毫秒数。如果事件在这段事件再次触发, 原先的事件处理函数不再调用, 新的事件处理函数接替。
只有当事件在目标Observable上触发时调用事件处理函数, 如果事件是从Observable的子类起泡的,不会调用事件处理函数
这个选项只对绑定在Components上的监听器有效。 Component的一个属性名,这个属性引用一个待添加监听器的元素
这个选项在Component构造过程中向Components的元素添加DOM事件监听器有用。 这些元素只有在Component渲染之后才会存在。 例如, 向Panel的body中添加click监听器:
new Ext.panel.Panel({
title: 'The title',
listeners: {
click: this.handlePanelClick,
element: 'body'
}
});
组合选项
使用options参数, 可以组合不同类型的监听器:
一个延时的一次性监听器:
myPanel.on('hide', this.handleClick, this, {
single: true,
delay: 100
});
向任何Observable对象(或者Ext.Element)添加监听器, 当组件被销毁时,监听器自动被移除
添加监听器的目标项。
事件名或者包含的事件名属性的对象。
(可选的) 如果ename
参数是事件名, 这就是一个事件处理函数。
(可选的) 如果ename
参数是事件名, 这就是(this
引用的上下文)
事件处理函数执行的作用域。
(可选的)如果ename
参数是事件名,
这就是addListener的选项。
当一个数据实例执行了Ext.data.Model.join方法后, 应调用Store的此函数.
被编辑的数据实例
编辑时修改的字段的名称数组.
调用原来的方法,这是以前的override重写
Ext.define('My.Cat', {
constructor: function() {
alert("I'm a cat!");
}
});
My.Cat.override({
constructor: function() {
alert("I'm going to be a cat!");
this.callOverridden();
alert("Meeeeoooowwww");
}
});
var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
// alerts "I'm a cat!"
// alerts "Meeeeoooowwww"
This method has been deprecated since 4.1
版本 使用 callParent 代替.
参数的参数,数组或'参数'对象
来自当前方法,例如: this.callOverridden(arguments)
返回调用重写方法的结果。
所谓的"parent"方法是指当前的方法。 这是以前的方法派生或重写(参见 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
这可以用来重写如下:
Ext.define('My.DerivedOverride', {
override: 'My.Derived',
constructor: function (x) {
this.callParent([x*2]); // 调用原来的My.Derived构造
}
});
var obj = new My.Derived();
alert(obj.x); // 现在提示 42
This also works with static methods.
Ext.define('My.Derived2', {
extend: 'My.Base',
statics: {
method: function (x) {
return this.callParent([x*2]); // 调用 My.Base.method
}
}
});
alert(My.Base.method(10); // alerts 10
alert(My.Derived2.method(10); // alerts 20
然后,它也可以重写静态方法。
Ext.define('My.Derived2Override', {
override: 'My.Derived2',
statics: {
method: function (x) {
return this.callParent([x*2]); // 调用 My.Derived2.method
}
}
});
alert(My.Derived2.method(10); // 现在提示 40
这个参数, 通过当前方法得到数组或者 arguments
对象,
例如: this.callParent(arguments)
返回调用父类的方法的结果。
移除本对象的包括受管理的监听器在内的所有监听器
移除本对象的所有受管理的监听器
规范化过滤器对象数组, 将他们统一成Ext.util.Filter类的实例.
过滤器数组
Ext.util.Filter对象数组
Normalizes an array of sorter objects, ensuring that they are all Ext.util.Sorter instances
The sorters array
Array of Ext.util.Sorter objects
通过调用this.getBubbleTarget()
(如果存在)允许本Observable对象触发的事件沿着继承体系起泡
在Observable基类中没有实现类。
这通常被Ext.Components用来将事件起泡到它的容器。 见Ext.Component.getBubbleTarget。Ext.Component中的默认实现 返回Component的直接容器。但是如果需要一个明显的target, 它可以被重写 以更快地访问需要的target。
使用范例:
Ext.override(Ext.form.field.Base, {
// Add functionality to Field's initComponent to enable the change event to bubble
initComponent : Ext.Function.createSequence(Ext.form.field.Base.prototype.initComponent, function() {
this.enableBubble('change');
}),
// We know that we want Field's events to bubble directly to the FormPanel.
getBubbleTarget : function() {
if (!this.formPanel) {
this.formPanel = this.findParentByType('form');
}
return this.formPanel;
}
});
var myForm = new Ext.formPanel({
title: 'User Details',
items: [{
...
}],
listeners: {
change: function() {
// Title goes red if form has been modified.
myForm.header.setStyle('color', 'red');
}
}
});
使用传递过来的参数(去掉事件名,加上传递给addListener的options
对象
)触发指定的事件。
通过调用enableBubble,一个事件 能被设置为沿着Observable的继承体系(见Ext.Component.getBubbleTarget)向上起泡。
如果任何一个事件处理函数返回false,就返回false,否则返回true。
返回一个对象, 用于执行this.sync时传给proxy.batch参数对象的listeners参数中. 我们将此操作拆分到一个单独的方法中以便于对listeners监听器进行定制修改.
监听(listeners)对象.
Gets the bubbling parent for an Observable
The bubble parent. null is returned if no bubble target exists
获取自上次提交以来, 所有新添加或被修改的records数据记录集. 注意数据记录的顺序是不确定的, 不是按数据修改的 顺序排列的. 还要注意此集合不包括被删除的数据记录(如需要请使用getRemovedRecords).
添加或修改的数据实例集合
返回全部虚拟的(例:没有id), 或有id但还没有保存到Store对象的(当从另一个Store对象添加一个非虚拟数据到当前对象时)数据实例.
数据实例集合
这个类的初始化配置。典型例子:
Ext.define('My.awesome.Class', {
// 这是默认配置
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 混入原型 键-值对
初始化本混入元素。使用本混入元素的组件类 应该在它们初始化时调用这个方法。
使用配置的数据代理(proxy)加载数据.
(可选参数)参数对象. 此对象将会传入Operation对象中, 然后随之传递给Proxy的Ext.data.proxy.Proxy.read方法.
this
addManagedListener的简写方法
向任何Observable对象(或者Ext.Element)添加监听器, 当组件被销毁时,监听器自动被移除
添加监听器的目标项。
事件名或者包含的事件名属性的对象。
(可选的) 如果ename
参数是事件名, 这就是一个事件处理函数。
(可选的) 如果ename
参数是事件名, 这就是(this
引用的上下文)
事件处理函数执行的作用域。
(可选的)如果ename
参数是事件名,
这就是addListener的选项。
移除通过mon方法添加的监听器。
待移除监听器的项
事件名或者包含的事件名属性的对象。
(可选的) 如果ename
参数是事件名, 这就是一个事件处理函数。
(可选的) 如果ename
参数是事件名, 这就是(this
引用的上下文)
事件处理函数执行的作用域。
addListener的简写方法
向本对象添加一个事件处理函数,例如:
myGridPanel.on("mouseover", this.onMouseOver, this);
这个方法也允许传递单个参数,参数为一个 包含指定多个事件的属性的配置对象。例如:
myGridPanel.on({
cellClick: this.onCellClick,
mouseover: this.onMouseOver,
mouseout: this.onMouseOut,
scope: this // Important. Ensure "this" is correct during handler execution
});
你也能为每个事件处理函数单独指定选项:
myGridPanel.on({
cellClick: {fn: this.onCellClick, scope: this, single: true},
mouseover: {fn: panel.onMouseOver, scope: panel}
});
也能使用在特定作用域的方法名。注意
必须指定scope
:
myGridPanel.on({
cellClick: {fn: 'onCellClick', scope: this, single: true},
mouseover: {fn: 'onMouseOver', scope: panel}
});
被监听的事件名。 也可以是属性名字是事件名字的对象。
事件调用的方法, 或者如果指定了scope
,在指定scope
的方法名*。
会被调用,
参数为fireEvent的参数加上下述options
参数。
事件处理函数执行的作用域(this
应用的上下文)
如果省略, 默认为触发事件的对象。
包含事件处理函数配置的对象。
注意: 不像ExtJS 3.x, options对象也会作为最后一个参数 传递给每一个事件处理函数。
这个对象可能包含以下任何一个属性:
事件处理函数执行的作用域(this
应用的上下文)
如果省略, 默认为触发事件的对象。
事件触发后,调用事件处理函数延时毫秒数。
设置为true添加一个事件处理函数,只处理下一次触发的事件, 然后移除这个函数。
使事件处理函数在Ext.util.DelayedTask中调度运行, 延时指定的毫秒数。如果事件在这段事件再次触发, 原先的事件处理函数不再调用, 新的事件处理函数接替。
只有当事件在目标Observable上触发时调用事件处理函数, 如果事件是从Observable的子类起泡的,不会调用事件处理函数
这个选项只对绑定在Components上的监听器有效。 Component的一个属性名,这个属性引用一个待添加监听器的元素
这个选项在Component构造过程中向Components的元素添加DOM事件监听器有用。 这些元素只有在Component渲染之后才会存在。 例如, 向Panel的body中添加click监听器:
new Ext.panel.Panel({
title: 'The title',
listeners: {
click: this.handlePanelClick,
element: 'body'
}
});
组合选项
使用options参数, 可以组合不同类型的监听器:
一个延时的一次性监听器:
myPanel.on('hide', this.handleClick, this, {
single: true,
delay: 100
});
当写操作从服务器返回时, 清除所有记录缓存.
清除数据数组
刚完成返回的操作
'true'表示操作成功执行.
Callback for any write Operation over the Proxy. Updates the Store's MixedCollection to reflect the updates provided by the Proxy 回调函数, 在所有通过Proxy代理执行的写操作完成后执行. 将Proxy代理提供的更新反射到Store对象的数据集合中.
从指定的Observable接替选定的事件就好像事件是this
触发的。
例如,如果你想要扩展Grid, 你可能决定转发store的一些事件。 所以你能在你的initComponent中实现这个:
this.relayEvents(this.getStore(), ['load']);
grid实例将会有一个observable的'load'事件,
这个事件的参数是store的load事件的参数。任何grid的load事件触发的函数
可以使用this
访问grid。
移除事件处理函数。
事件处理函数关联的事件类型
待移除的事件处理函数。 必须是对传递给addListener 的函数的引用。
(可选的) 原先为事件处理函数指定的作用域。 它必须是和原先调用addListener时指定的作用域参数是一样的,否者监听器将会被移除。
移除通过mon方法添加的监听器。
待移除监听器的项
事件名或者包含的事件名属性的对象。
(可选的) 如果ename
参数是事件名, 这就是一个事件处理函数。
(可选的) 如果ename
参数是事件名, 这就是(this
引用的上下文)
事件处理函数执行的作用域。
恢复Store与Proxy的自动数据同步. 仅当autoSync为true时有效.
继续事件的触发(见suspendEvents)。
如果事件被使用queueSuspended
参数挂起, 那么所有
在事件挂起期间触发的事件将会被发送到任意监听器。
通过字符串, 属性对象或Proxy实例为当前Store设置Proxy.
新Proxy对象, 可以是字符串, 属性对象, 或Ext.data.proxy.Proxy实例
附属的Proxy代理对象
使用一个或多个排序Store中的数据。使用范例:
//sort by a single field
myStore.sort('myField', 'DESC');
//sorting by multiple fields
myStore.sort([
{
property : 'age',
direction: 'ASC'
},
{
property : 'name',
direction: 'DESC'
}
]);
Store在内部将参数转换为Ext.util.Sorter实例数组, 把实际的排序过程委托给它内部的Ext.util.MixedCollection。
当传递单个字符串参数时, Store给每一个字段保存了一个ASC/DESC切换器,所以如下代码:
store.sort('myField');
store.sort('myField');
等价于如下代码, 因为Store实现自动的切换:
store.sort('myField', 'ASC');
store.sort('myField', 'DESC');
本Store的配置的Model的一个字段的字符串名字, 或者排序器配置数组。
数据排序方向。默认为"ASC"。
获取从该对象被实例化的类的引用。 请注意不同于 self,
this.statics()
是独立的作用域,无论this
是否运行,总是返回其中的调用类。
Ext.define('My.Cat', {
statics: {
totalCreated: 0,
speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
},
constructor: function() {
var statics = this.statics();
alert(statics.speciesName); // 总是等于'Cat',无论'this'是什么,
// 相当于:My.Cat.speciesName
alert(this.self.speciesName); // 依赖 'this'
statics.totalCreated++;
},
clone: function() {
var cloned = new this.self; // 依赖 'this'
cloned.groupName = this.statics().speciesName; // 相当于: 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', 然后提示 'Cat'
var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', 然后提示 'Snow Leopard'
var clone = snowLeopard.clone();
alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'
alert(clone.groupName); // alerts 'Cat'
alert(My.Cat.totalCreated); // alerts 3
暂停Store与Proxy的自动数据同步. 仅当autoSync为true时有效.
挂起所有事件的触发。(见resumeEvents)
传true,让挂起的事件排队而不是丢弃所有挂起的事件, 这些事件将会在调用resumeEvents之后触发。
同步Store与其proxy. 此处请求代理器分批处理Store中所有新增, 修改, 删除的记录, 并在每次操作执行完成后 更新Store内部的数据记录.
包含一个或多个同步方法所支持的属性参数的对象(这些参数将被传入底层代理的 batch方法):
一个Ext.data.Batch对象(或用来创建Batch实例的属性参数). 若未明确指定, 则会自动创建一个默认的Batch对象.
同步结束后的回调函数. 无论同步是否成功都将调用此回调函数, 调用参数如下:
操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.
最初传入sync方法的options参数.
同步操作成功完成后的回调函数. 此回调函数仅当所有操作都没有报告异常时才调用. 如果至少一个异常发生, 则改为调用options.failure方法 成功回调函数参数如下:
操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.
最初传入sync方法的options参数.
同步操作没有成功完成后的回调函数. 此回调函数在处理过程中有一个或多个操作返回 异常时被调用(即使有部分操作成功完成). 这种情况下你可以检查batch参数的exceptions 数组来查明发生异常的操作. 失败回调函数的参数如下:
操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.
最初传入sync方法的options参数.
所有回调函数的执行作用域(也就是callback, success, failure回调函数中的'this'所指对象). 默认为当前store的proxy对象.
this
配置扩展
removeListener的简写方法
移除事件处理函数。
事件处理函数关联的事件类型
待移除的事件处理函数。 必须是对传递给addListener 的函数的引用。
(可选的) 原先为事件处理函数指定的作用域。 它必须是和原先调用addListener时指定的作用域参数是一样的,否者监听器将会被移除。
方法/属性添加到这个类的原型。
Ext.define('My.awesome.Cat', {
constructor: function() {
...
}
});
My.awesome.Cat.implement({
meow: function() {
alert('Meowww...');
}
});
var kitty = new My.awesome.Cat;
kitty.meow();
成员
添加/重写这个类的静态属性。
Ext.define('My.cool.Class', {
...
});
My.cool.Class.addStatics({
someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue'
method1: function() { ... }, // My.cool.Class.method1 = function() { ... };
method2: function() { ... } // My.cool.Class.method2 = function() { ... };
});
成员
this
这个类的原型借用另一个类的成员
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 '$$$$$$$'
this 借用成员
创建这个类的新实例。
Ext.define('My.cool.Class', {
...
});
My.cool.Class.create({
someConfig: true
});
所有参数传递至类的构造。
创建的实例。
创建现有的原型方法的别名。例如:
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()
别名新方法的名称,或对象设置多个别名。 参见flexSetter
原来的方法名
以字符串格式,获取当前类的名称。
Ext.define('My.cool.Class', {
constructor: function() {
alert(this.self.getName()); // alerts 'My.cool.Class'
}
});
My.cool.Class.getName(); // 'My.cool.Class'
className 类名
重写这个类的成员。通过callParent重写的方法可以调用。
Ext.define('My.Cat', {
constructor: function() {
alert("I'm a cat!");
}
});
My.Cat.override({
constructor: function() {
alert("I'm going to be a cat!");
this.callParent(arguments);
alert("Meeeeoooowwww");
}
});
var kitty = new My.Cat(); // alerts "I'm going to be a cat!我要成为一只猫!"
// alerts "I'm a cat!我是一只猫!"
// alerts "Meeeeoooowwww"
在4.1版本, 直接利用这种方法已经过时了。 使用 Ext.define 代替:
Ext.define('My.CatOverride', {
override: 'My.Cat',
constructor: function() {
alert("I'm going to be a cat!");
this.callParent(arguments);
alert("Meeeeoooowwww");
}
});
以上完成了相同的结果,但可以由Ext.Loader重写, 其目标类和生成过程中,可以决定是否需要根据目标类所需的状态覆盖管理(My.Cat)。
This method has been deprecated since 4.1.0
使用 Ext.define 代替
添加到这个类的属性。 这应当被指定为一个对象包含一个或多个属性的文字。
this class 当前类
当有数据实例被添加时触发此事件.
当前Store对象
被添加的数据实例.
数据实例被插入的位置.
The options object passed to Ext.util.Observable.addListener.
在一个新数据对象请求发出前触发此事件. 如果beforeload的处理函数返回'false', 数据请求将被取消.
当前Store对象
Store执行加载时作为参数传给Proxy的Ext.data.Operation对象.
The options object passed to Ext.util.Observable.addListener.
在执行sync调用之前触发此事件. 当有监听者返回'false'时取消同步.
所有待同步的数据记录, 分解为create, update和destroy的哈希存储.
The options object passed to Ext.util.Observable.addListener.
在removeAll方法调用之后触发此事件.
当前Store对象
The options object passed to Ext.util.Observable.addListener.
当Store中的现有数据有任何形式的更改时触发此事件 - 包括了添加、删除数据, 或更改现有数据.
当前Store对象
The options object passed to Ext.util.Observable.addListener.
每当store从远程数据源读取数据时触发此事件.
当前Store对象
数据记录数组
当操作成功时为'true'.
The options object passed to Ext.util.Observable.addListener.
当store的底层reader对象(通过proxy对象调用)提供了新的元数据时触发此事件. 元数据通常由新的字段定义构成, 且可以包含系统所需的任意参数数据, 并可以根据需要由事件监听者处理. 此事件目前仅为JsonReader对象触发.
当前Store对象
JSON元数据
The options object passed to Ext.util.Observable.addListener.
当数据缓存被整体修改(例如 排序,过滤等), 并且存在一个将当前Store作为记录缓存的组件需要刷新视图时触发此事件.
当前Store对象
The options object passed to Ext.util.Observable.addListener.
当有数据实例被删除时触发此事件.
当前Store对象
被删除的数据实例.
被删除数据实例的位置.
The options object passed to Ext.util.Observable.addListener.
当有数据实例被更新时触发此事件.
当前Store对象
被更新后的数据实例.
执行的数据操作类型. 可能的值为:
Ext.data.Model.EDIT
Ext.data.Model.REJECT
Ext.data.Model.COMMIT
被修改的字段名称的数组.
The options object passed to Ext.util.Observable.addListener.
每当通过配置的Proxy代理完成写操作时触发此事件.
当前Store对象
用于写数据操作的Operation对象.
The options object passed to Ext.util.Observable.addListener.