Ext.data.AbstractStore

Hierarchy

Ext.Base
Ext.data.AbstractStore

Mixins

Requires

Subclasses

Files

AbstractStore是Ext.data.StoreExt.data.TreeStore的父类. 它作为抽象类从不会被直接使用, 但它为这两个子类 提供了一套函数.

我们出于参考的目的, 把此类写进了此文档中, 但是除非你打算创建一个全新的Store类型, 否则你可能只需要看Ext.data.Store即可. 但是如果你有兴趣, 这里有一些对于AbstractStore究竟是何物的简单说明.

AbstractStore提供了一个Store所需的任何能够想到的基础属性. 我们预计需要提供一个Model对象来描述Store中数据 的类型. 还预计需要提供一个Proxy对象来处理Store中数据的加载.

AbstractStore提供了一些有用的方法, 例如loadsync, 通过将请求参数对象传递给配置的proxy, 分别实现了数据的加载和保存. 两个内置Store子类都为这些方法添加了额外的实现. 需要注意的是AbstractStore的各子类都有各自存储数据的方式 - 像Ext.data.Store中数据以扁平的MixedCollection集合来存储数据, 而在 TreeStore中我们使用了Ext.data.Tree来维护数据的层次关系.

本类还提供了过滤和排序支持. 过滤/排序可以由客户端进行, 也可以完全在服务器端完成. 这可以通过remoteSortremoteFilter参数来控制. 更多信息参见sortfilter方法.

Defined By

Config options

Ext.data.AbstractStore
: Boolean/Object

如果data属性未定义, 并且autoLoad值为'true'或对象, 则此store的load方法将在创建后自动执行. 如果autoLoad值是一个对象, 这个对象将 作为参数传递给load方法. 默认为'false'.

Ext.data.AbstractStore
: Boolean

'true'表示每当对一条Record记录完成修改后, 都将对Store与Proxy进行同步. 默认为'false'.

Defaults to: false

Ext.data.AbstractStore
: Object[]

此参数可以用来代替model参数. fields值应该是一个Ext.data.Field属性对象的集合. store对象将 自动使用此参数的值来创建一个Ext.data.Model数据模型. 通常应该避免使用此参数, 它只是为了向下兼容而存在. 对于任何稍复杂的情况, 比如制定一个特定的ID或关联关系, 都应该定义一个Ext.data.Model模型对象并通过 model参数指定给当前store.

Ext.data.AbstractStore
filters : Object[]

当前store对象的Filters过滤器数组.

当前store对象的Filters过滤器数组.

一个配置对象,包含一个或多个事件处理函数,在对象初始化时添加到对象。 它应该是addListener指定的一个有效的监听器配置对象, 一次添加多个事件处理函数。

Ext JS 组建的DOM事件

虽然一些Ext JS组件类输出选定的DOM事件(例如"click"、"mouseover"等), 但是这只能通过添加额外的值(如果能)。例如,DataViewitemclick传递被单击的节点。为了通过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'); }
        }
    }
});
Ext.data.AbstractStore
: String

当前store对象的Model数据模型的名称. 此字符串将作为一个参数来调用Ext.ModelManager.getModel.

Ext.data.AbstractStore
: String/Ext.data.proxy.Proxy/Object

此Store使用的Proxy数据代理对象. 此参数可以为一个字符串, 一个属性对象或一个Proxy实例 - 详情参见setProxy

Ext.data.AbstractStore
: String

当前store对象的唯一标识ID. 当此值存在时, 当前Store将被注册到Ext.data.StoreManager中, 从而可以在别处轻松创建.

注意当sotre对象是由Controller进行实例化时, storeId值将被store的名称覆盖.

Defined By

Properties

扩展事件

Defaults to: []

Ext.data.AbstractStore
: String

设置更新操作为批量同步更新. 'operation'(默认)表示Store的内部数据会在批处理的每次操作完成后更新, 'complete'表示Store的数据 会等到整个批处理全部完成后再更新. 在使用本地数据代理时选择'complete'比较合适, 而'operation'更适用于相对延时较高的远程代理.

Defaults to: "operation"

Ext.data.AbstractStore
: String

默认的Proxy代理对象字符串类型. 默认值为创建一个Memory内存代理.

Defaults to: "memory"

默认的排序方向

Defaults to: "ASC"

Ext.data.AbstractStore
: Boolean

'true'表示此Store所有附属的过滤器都会在加载数据之后, datachanged事件触发之前执行. 默认为'true', 当 remoteFilter为'true'时此参数被忽略.

Defaults to: true

Ext.data.AbstractStore
filters : Ext.util.MixedCollection

立刻添加到此Store对象的Filters过滤器集合.

立刻添加到此Store对象的Filters过滤器集合.

本对象包含任何有监听器的事件的键。监听器可以在实例上直接设置, 或者在其类或者父类(通过observe) 或者在MVC EventBus上设置。本对象的值为真 (一个非零的数字)和假(0或者undefined)。它们并不代表确切的监听...

本对象包含任何有监听器的事件的键。监听器可以在实例上直接设置, 或者在其类或者父类(通过observe) 或者在MVC EventBus上设置。本对象的值为真 (一个非零的数字)和假(0或者undefined)。它们并不代表确切的监听器数量。 如果事件必须被触发,它的值是真的, 如果没有必要,就是假的。

本属性的设计目的是避免没有监听器时调用fireEvent的开销。 如果fireEvent要调用成百上千次,这尤其有用。 用法:

 if (this.hasListeners.foo) {
     this.fireEvent('foo', this, arg1);
 }
Ext.data.AbstractStore
: Booleanprivate

'true'表示model模型对象将由Store内部创建. 这种情况发生在使用fields数组而不是model对象或名称来创建Store时.

Defaults to: false

Ext.data.AbstractStore
: Boolean

'true'表示Store已被销毁. 如果此值为true, 所有对当前Store的引用都应被删除, 因为此时所有的方法都已经不再保证能够正确执行.

Defaults to: false

在本类中设置为true将一个对象标识为实例化的Observable或其子类。

Defaults to: true

设置为true将某个对象标识为实例化的Sortable或其子类。

Defaults to: true

Ext.data.AbstractStore
: Boolean

true来标识当前对象为一个Store或子类的实例.

Defaults to: true

Ext.data.AbstractStore
: Objectprivate

一组默认值, 将被应用到所有通过insert添加或create创建的数据实例中. 此参数由关联模型在内部使用, 用来为外键和其他字段赋值. 可在Association类源码中查看相关示例. 应用程序开发人员通常不需要使用此参数.

Ext.data.AbstractStore
: Ext.data.Model[]protected

被删除的数据实例的临时缓存, 直到Proxy成功执行同步后清空.

Defaults to: []

本身 获取当前类的引用,此对象被实例化。不同于 statics, this.self是依赖范围,它意味着要使用动态继承。 ...

本身

获取当前类的引用,此对象被实例化。不同于 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'
Ext.data.AbstractStore
: Boolean

'true'表示此Store所有排序都会在加载数据之后, datachanged事件触发之前执行. 默认为'true', 当 remoteSort为'true'时此参数被忽略.

Defaults to: true

每个包含待排序数据的项的属性

每个包含待排序数据的项的属性

应用于当前Store的排序器集合

应用于当前Store的排序器集合

Methods

Defined By

Instance Methods

( Object config )private

添加配置

Parameters

向本Observable可能触发的事件列表中添加指定的事件。

Parameters

  • eventNames : Object/String...

    要么是有事件名作为属性,属性值为 true的对象。例如:

    this.addEvents({
        storeloaded: true,
        storecleared: true
    });
    

    要么是作为参数的任意个数的事件名。例如:

    this.addEvents('storeloaded', 'storecleared');
    

Parameters

( String/Object eventName, [Function fn], [Object scope], [Object options] )
向本对象添加一个事件处理函数,例如: myGridPanel.on("mouseover", this.onMouseOver, this); 这个方法也允许传递单个参数,参数为一个 包含指定多个事件的属性的配置对象。例如: ...

向本对象添加一个事件处理函数,例如:

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}
});

Parameters

  • eventName : String/Object

    被监听的事件名。 也可以是属性名字是事件名字的对象。

  • fn : Function (optional)

    事件调用的方法, 或者如果指定了scope,在指定scope的方法名*。 会被调用, 参数为fireEvent的参数加上下述options参数。

  • scope : Object (optional)

    事件处理函数执行的作用域(this应用的上下文) 如果省略, 默认为触发事件的对象。

  • options : Object (optional)

    包含事件处理函数配置的对象。

    注意: 不像ExtJS 3.x, options对象也会作为最后一个参数 传递给每一个事件处理函数。

    这个对象可能包含以下任何一个属性:

    • scope : Object

      事件处理函数执行的作用域(this应用的上下文) 如果省略, 默认为触发事件的对象。

    • delay : Number

      事件触发后,调用事件处理函数延时毫秒数。

    • single : Boolean

      设置为true添加一个事件处理函数,只处理下一次触发的事件, 然后移除这个函数。

    • buffer : Number

      使事件处理函数在Ext.util.DelayedTask中调度运行, 延时指定的毫秒数。如果事件在这段事件再次触发, 原先的事件处理函数再调用, 新的事件处理函数接替。

    • target : Ext.util.Observable

      只有当事件在目标Observable上触发时调用事件处理函数, 如果事件是从Observable的子类起泡的,不会调用事件处理函数

    • element : String

      这个选项只对绑定在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)添加监听器, 当组件被销毁时,监听器自动被移除 ...

向任何Observable对象(或者Ext.Element)添加监听器, 当组件被销毁时,监听器自动被移除

Parameters

  • item : Ext.util.Observable/Ext.Element

    添加监听器的目标项。

  • ename : Object/String

    事件名或者包含的事件名属性的对象。

  • fn : Function

    (可选的) 如果ename参数是事件名, 这就是一个事件处理函数。

  • scope : Object

    (可选的) 如果ename参数是事件名, 这就是(this引用的上下文) 事件处理函数执行的作用域。

  • opt : Object

    (可选的)如果ename参数是事件名, 这就是addListener的选项。

( Object name, Object member )private

Parameters

( Object xtype )private

添加 Xtype

Parameters

Ext.data.AbstractStore
( Ext.data.Model record )private

当一个数据实例执行了Ext.data.Model.join方法后, 应调用Store的此函数..

Parameters

Ext.data.AbstractStore
( Ext.data.Model record, String[] modifiedFieldNames )private

当一个数据实例执行了Ext.data.Model.join方法后, 应调用Store的此函数.

Parameters

  • record : Ext.data.Model

    被编辑的数据实例

  • modifiedFieldNames : String[]

    编辑时修改的字段的名称数组.

Ext.data.AbstractStore
( Ext.data.Model record )private

当一个数据实例执行了Ext.data.Model.join方法后, 应调用Store的此函数..

Parameters

( Array/Arguments ) : Objectdeprecatedprotected
调用原来的方法,这是以前的override重写 Ext.define('My.Cat', { constructor: function() { alert("I'm a cat!"); } }); ...

调用原来的方法,这是以前的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 代替.

Parameters

  • : Array/Arguments

    参数的参数,数组或'参数'对象 来自当前方法,例如: this.callOverridden(arguments)

Returns

  • Object

    返回调用重写方法的结果。

( Array/Arguments args ) : Objectprotected

所谓的"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

Parameters

  • args : Array/Arguments

    这个参数, 通过当前方法得到数组或者 arguments 对象, 例如: this.callParent(arguments)

Returns

  • Object

    返回调用父类的方法的结果。

移除本对象的包括受管理的监听器在内的所有监听器

移除本对象的所有受管理的监听器

( String eventName, Array args, Boolean bubbles )private

Continue to fire event.

Parameters

( Object newName, [Array beginEnd] ) : Functionprivate

Creates an event handling function which refires the event from this object as the passed event name.

Parameters

  • newName : Object
  • beginEnd : Array (optional)

    The caller can specify on which indices to slice

Returns

Ext.data.AbstractStore
( Object[] filters ) : Ext.util.Filter[]private

规范化过滤器对象数组, 将他们统一成Ext.util.Filter类的实例.

Parameters

  • filters : Object[]

    过滤器数组

Returns

Normalizes an array of sorter objects, ensuring that they are all Ext.util.Sorter instances

Parameters

  • sorters : Object[]

    The sorters array

Returns

通过调用this.getBubbleTarget()(如果存在)允许本Observable对象触发的事件沿着继承体系起泡 在Observable基类中没有实现类。 ...

通过调用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');
        }
    }
});

Parameters

  • eventNames : String/String[]

    待起泡的事件名,或者事件名数组。

( Object config )private

拓展

Parameters

Ext.data.AbstractStore
( Object item )private

新数据记录的过滤方法

Parameters

Ext.data.AbstractStore
( Object item )private

对修改数据的过滤函数.

Parameters

使用传递过来的参数(去掉事件名,加上传递给addListener的options对象 )触发指定的事件。 ...

使用传递过来的参数(去掉事件名,加上传递给addListeneroptions对象 )触发指定的事件。

通过调用enableBubble,一个事件 能被设置为沿着Observable的继承体系(见Ext.Component.getBubbleTarget)向上起泡。

Parameters

  • eventName : String

    待触发的事件名。

  • args : Object...

    传递给事件处理函数的可变数量的参数

Returns

  • Boolean

    如果任何一个事件处理函数返回false,就返回false,否则返回true。

返回一个比较器函数,比较两个项, 根据当前定义的sorters集合返回 -1, 0或者1。 ...

返回一个比较器函数,比较两个项, 根据当前定义的sorters集合返回 -1, 0或者1。

如果没有定义{@olink sorters},它返回一个函数。这个函数返回0,表示不会进行排序

Ext.data.AbstractStore
( ) : Objectprivate

返回一个对象, 用于执行this.sync时传给proxy.batch参数对象的listeners参数中. 我们将此操作拆分到一个单独的方法中以便于对listeners监听器进行定制修改.

Returns

  • Object

    监听(listeners)对象.

Gets the bubbling parent for an Observable

Returns

( Object name )private

得到配置项

Parameters

得到初始化配置项

Parameters

Ext.data.AbstractStore
( ) : Ext.data.Model[]

获取自上次提交以来, 所有新添加或被修改的records数据记录集. 注意数据记录的顺序是不确定的, 不是按数据修改的 顺序排列的. 还要注意此集合不包括被删除的数据记录(如需要请使用getRemovedRecords).

Returns

Ext.data.AbstractStore
( ) : Ext.data.Model[]

返回全部虚拟的(例:没有id), 或有id但还没有保存到Store对象的(当从另一个Store对象添加一个非虚拟数据到当前对象时)数据实例.

Returns

Ext.data.AbstractStore
( ) : Ext.data.proxy.Proxy

返回当前附属的proxy代理对象的实例.

Returns

Ext.data.AbstractStore
( ) : Ext.data.Model[]

返回全部已经在Store中被删除但还未通过代理销毁的数据实例.

Returns

Ext.data.AbstractStore
( ) : Ext.data.Model[]

返回全部已经在Store中被更改但还未通过代理同步的数据实例.

Returns

( Object config )private

根据名称判断配置项是否存在

Parameters

检查本对象是否有特定事件的监听器, 或者检查事件是否起泡。 检查的结果表明事件是否需要出发。

Parameters

  • eventName : String

    待检查的事件名

Returns

  • Boolean

    如果事件被监听或者起泡,返回true, 否则返回false

( Object config ) : Objectprotected
这个类的初始化配置。典型例子: Ext.define('My.awesome.Class', { // 这是默认配置 config: { name: 'Awesome', isAwes...

这个类的初始化配置。典型例子:

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' 超级棒

Parameters

Returns

  • Object

    mixins 混入原型 键-值对

初始化本混入元素。使用本混入元素的组件类 应该在它们初始化时调用这个方法。 ...

初始化本混入元素。使用本混入元素的组件类 应该在它们初始化时调用这个方法。

Ext.data.AbstractStore
( ) : Boolean

'true'表示Store当前正在执行load操作.

Returns

  • Boolean

    返回'true'则表示Store正在加载数据中.

Ext.data.AbstractStore
( Object options ) : Ext.data.Store

使用配置的数据代理(proxy)加载数据.

Parameters

Returns

( Object name, Object mixinClass )private

内部使用混入预处理器(mixins pre-processor)

Parameters

addManagedListener的简写方法 向任何Observable对象(或者Ext.Element)添加监听器, 当组件被销毁时,监听器自动被移除 ...

addManagedListener的简写方法

向任何Observable对象(或者Ext.Element)添加监听器, 当组件被销毁时,监听器自动被移除

Parameters

  • item : Ext.util.Observable/Ext.Element

    添加监听器的目标项。

  • ename : Object/String

    事件名或者包含的事件名属性的对象。

  • fn : Function

    (可选的) 如果ename参数是事件名, 这就是一个事件处理函数。

  • scope : Object

    (可选的) 如果ename参数是事件名, 这就是(this引用的上下文) 事件处理函数执行的作用域。

  • opt : Object

    (可选的)如果ename参数是事件名, 这就是addListener的选项。

removeManagedListener的简写方法 移除通过mon方法添加的监听器。 ...

removeManagedListener的简写方法

移除通过mon方法添加的监听器。

Parameters

  • item : Ext.util.Observable/Ext.Element

    待移除监听器的项

  • ename : Object/String

    事件名或者包含的事件名属性的对象。

  • fn : Function

    (可选的) 如果ename参数是事件名, 这就是一个事件处理函数。

  • scope : Object

    (可选的) 如果ename参数是事件名, 这就是(this引用的上下文) 事件处理函数执行的作用域。

( String/Object eventName, [Function fn], [Object scope], [Object options] )
addListener的简写方法 向本对象添加一个事件处理函数,例如: myGridPanel.on("mouseover", this.onMouseOver, 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}
});

Parameters

  • eventName : String/Object

    被监听的事件名。 也可以是属性名字是事件名字的对象。

  • fn : Function (optional)

    事件调用的方法, 或者如果指定了scope,在指定scope的方法名*。 会被调用, 参数为fireEvent的参数加上下述options参数。

  • scope : Object (optional)

    事件处理函数执行的作用域(this应用的上下文) 如果省略, 默认为触发事件的对象。

  • options : Object (optional)

    包含事件处理函数配置的对象。

    注意: 不像ExtJS 3.x, options对象也会作为最后一个参数 传递给每一个事件处理函数。

    这个对象可能包含以下任何一个属性:

    • scope : Object

      事件处理函数执行的作用域(this应用的上下文) 如果省略, 默认为触发事件的对象。

    • delay : Number

      事件触发后,调用事件处理函数延时毫秒数。

    • single : Boolean

      设置为true添加一个事件处理函数,只处理下一次触发的事件, 然后移除这个函数。

    • buffer : Number

      使事件处理函数在Ext.util.DelayedTask中调度运行, 延时指定的毫秒数。如果事件在这段事件再次触发, 原先的事件处理函数再调用, 新的事件处理函数接替。

    • target : Ext.util.Observable

      只有当事件在目标Observable上触发时调用事件处理函数, 如果事件是从Observable的子类起泡的,不会调用事件处理函数

    • element : String

      这个选项只对绑定在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
      });
      
Ext.data.AbstractStore
( Object batch, Object operation )private

给代理的批处理对象添加一个'complete'事件监听者. 遍历批处理的操作来更新Store的内部数据集合.

Parameters

Ext.data.AbstractStore
( Object batch, Object operation )private

给代理的批处理对象添加一个'operationcomplete'事件监听者. 基类默认仅调用onProxyWrite.

Parameters

( Object names, Object callback, Object scope )private

更新配置项

Parameters

Ext.data.AbstractStore
( Ext.data.Model[] records, Ext.data.Operation operation, Boolean success )private

当写操作从服务器返回时, 清除所有记录缓存.

Parameters

( Object fn, Object scope )private

扩展事件

Parameters

Ext.data.AbstractStore
( Object operation )private

Callback for any write Operation over the Proxy. Updates the Store's MixedCollection to reflect the updates provided by the Proxy 回调函数, 在所有通过Proxy代理执行的写操作完成后执行. 将Proxy代理提供的更新反射到Store对象的数据集合中.

Parameters

让给定的类成为可观察的实例。 这个方法在有类从本类派生或者使用本类作为一个mixin时调用。

Parameters

( Object origin, String[] events, [String prefix] )

从指定的Observable接替选定的事件就好像事件是this触发的。

例如,如果你想要扩展Grid, 你可能决定转发store的一些事件。 所以你能在你的initComponent中实现这个:

this.relayEvents(this.getStore(), ['load']);

grid实例将会有一个observable的'load'事件, 这个事件的参数是store的load事件的参数。任何grid的load事件触发的函数 可以使用this访问grid。

Parameters

  • origin : Object

    本对象要接替事件的Observable对象

  • events : String[]

    被接替的事件名数组

  • prefix : String (optional)

    附加到事件名的公共前缀。例如:

    this.relayEvents(this.getStore(), ['load', 'clear'], 'store');
    

    这样grid将会以'storeload'和'storeclear'转发store的'load'和'clear'事件。

Ext.data.AbstractStore
( )

删除store的所有数据记录. 此方法进行'快速删除', 有个别的删除事件不触发. 处理完成后 将触发clear事件.

移除事件处理函数。

Parameters

  • eventName : String

    事件处理函数关联的事件类型

  • fn : Function

    待移除的事件处理函数。 必须是对传递给addListener 的函数的引用。

  • scope : Object

    (可选的) 原先为事件处理函数指定的作用域。 它必须是和原先调用addListener时指定的作用域参数是一样的,否者监听器将会被移除。

移除通过mon方法添加的监听器。

Parameters

  • item : Ext.util.Observable/Ext.Element

    待移除监听器的项

  • ename : Object/String

    事件名或者包含的事件名属性的对象。

  • fn : Function

    (可选的) 如果ename参数是事件名, 这就是一个事件处理函数。

  • scope : Object

    (可选的) 如果ename参数是事件名, 这就是(this引用的上下文) 事件处理函数执行的作用域。

Remove a single managed listener item

Parameters

  • isClear : Boolean

    True if this is being called during a clear

  • managedListener : Object

    The managed listener item See removeManagedListener for other args

Ext.data.AbstractStore
( )

恢复Store与Proxy的自动数据同步. 仅当autoSync为true时有效.

继续事件的触发(见suspendEvents)。

如果事件被使用queueSuspended参数挂起, 那么所有 在事件挂起期间触发的事件将会被发送到任意监听器。

Ext.data.AbstractStore
( )deprecated

通过proxy代理保存所有未保存的修改. 应使用sync方法代替.

This method has been deprecated since 4.0.0

将会在下一个主版本中删除.

( Object config, Object applyIfNotSet )private

设置配置项

Parameters

通过字符串, 属性对象或Proxy实例为当前Store设置Proxy.

Parameters

Returns

使用一个或多个排序Store中的数据。使用范例: //sort by a single field myStore.sort('myField', 'DESC'); //sorting by multiple fields myS...

使用一个或多个排序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');

Parameters

  • sorters : String/Ext.util.Sorter[]

    本Store的配置的Model的一个字段的字符串名字, 或者排序器配置数组。

  • direction : String

    数据排序方向。默认为"ASC"。

Returns

获取从该对象被实例化的类的引用。 请注意不同于 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

Returns

Ext.data.AbstractStore
( )

暂停Store与Proxy的自动数据同步. 仅当autoSync为true时有效.

挂起所有事件的触发。(见resumeEvents)

Parameters

  • queueSuspended : Boolean

    传true,让挂起的事件排队而不是丢弃所有挂起的事件, 这些事件将会在调用resumeEvents之后触发。

Ext.data.AbstractStore
( [Object options] ) : Ext.data.Store

同步Store与其proxy. 此处请求代理器分批处理Store中所有新增, 修改, 删除的记录, 并在每次操作执行完成后 更新Store内部的数据记录.

Parameters

  • options : Object (optional)

    包含一个或多个同步方法所支持的属性参数的对象(这些参数将被传入底层代理的 batch方法):

    • batch : Ext.data.Batch/Object (optional)

      一个Ext.data.Batch对象(或用来创建Batch实例的属性参数). 若未明确指定, 则会自动创建一个默认的Batch对象.

    • callback : Function (optional)

      同步结束后的回调函数. 无论同步是否成功都将调用此回调函数, 调用参数如下:

      Parameters

      • batch : Ext.data.Batch

        操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.

      • options : Object

        最初传入sync方法的options参数.

    • success : Function (optional)

      同步操作成功完成后的回调函数. 此回调函数仅当所有操作都没有报告异常时才调用. 如果至少一个异常发生, 则改为调用options.failure方法 成功回调函数参数如下:

      Parameters

      • batch : Ext.data.Batch

        操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.

      • options : Object

        最初传入sync方法的options参数.

    • failure : Function (optional)

      同步操作没有成功完成后的回调函数. 此回调函数在处理过程中有一个或多个操作返回 异常时被调用(即使有部分操作成功完成). 这种情况下你可以检查batch参数的exceptions 数组来查明发生异常的操作. 失败回调函数的参数如下:

      Parameters

      • batch : Ext.data.Batch

        操作前传入的batch参数, 包含处理完成后所有的带状态标记的操作对象.

      • options : Object

        最初传入sync方法的options参数.

    • scope : Object (optional)

      所有回调函数的执行作用域(也就是callback, success, failure回调函数中的'this'所指对象). 默认为当前store的proxy对象.

Returns

配置扩展

removeListener的简写方法 移除事件处理函数。 ...

removeListener的简写方法

移除事件处理函数。

Parameters

  • eventName : String

    事件处理函数关联的事件类型

  • fn : Function

    待移除的事件处理函数。 必须是对传递给addListener 的函数的引用。

  • scope : Object

    (可选的) 原先为事件处理函数指定的作用域。 它必须是和原先调用addListener时指定的作用域参数是一样的,否者监听器将会被移除。

Defined By

Static Methods

( Object members )static

方法/属性添加到这个类的原型。

Ext.define('My.awesome.Cat', {
    constructor: function() {
        ...
    }
});

 My.awesome.Cat.implement({
     meow: function() {
        alert('Meowww...');
     }
 });

 var kitty = new My.awesome.Cat;
 kitty.meow();

Parameters

添加/重写这个类的静态属性。

Ext.define('My.cool.Class', {
    ...
});

My.cool.Class.addStatics({
    someProperty: 'someValue',      // My.cool.Class.someProperty = 'someValue'
    method1: function() { ... },    // My.cool.Class.method1 = function() { ... };
    method2: function() { ... }     // My.cool.Class.method2 = function() { ... };
});

Parameters

Returns

( Ext.Base fromClass, Array/String members ) : Ext.Baseprivatestatic
这个类的原型借用另一个类的成员 Ext.define('Bank', { money: '$$$', printMoney: function() { alert('$$$$$$$'); } ...

这个类的原型借用另一个类的成员

Ext.define('Bank', {
    money: '$$$',
    printMoney: function() {
        alert('$$$$$$$');
    }
});

Ext.define('Thief', {
    ...
});

Thief.borrow(Bank, ['money', 'printMoney']);

var steve = new Thief();

alert(steve.money); // alerts '$$$'
steve.printMoney(); // alerts '$$$$$$$'

Parameters

Returns

创建这个类的新实例。

Ext.define('My.cool.Class', {
    ...
});

My.cool.Class.create({
    someConfig: true
});

所有参数传递至类的构造。

Returns

创建现有的原型方法的别名。例如: Ext.define('My.cool.Class', { method1: function() { ... ...

创建现有的原型方法的别名。例如:

Ext.define('My.cool.Class', {
    method1: function() { ... },
    method2: function() { ... }
});

var test = new My.cool.Class();

My.cool.Class.createAlias({
    method3: 'method1',
    method4: 'method2'
});

test.method3(); // test.method1()

My.cool.Class.createAlias('method5', 'method3');

test.method5(); // test.method3() -> test.method1()

Parameters

以字符串格式,获取当前类的名称。

Ext.define('My.cool.Class', {
    constructor: function() {
        alert(this.self.getName()); // alerts 'My.cool.Class'
    }
});

My.cool.Class.getName(); // 'My.cool.Class'

Returns

( Object members ) : Ext.Basedeprecatedstatic

重写这个类的成员。通过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 代替

Parameters

  • members : Object

    添加到这个类的属性。 这应当被指定为一个对象包含一个或多个属性的文字。

Returns

Defined By

Events

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Model[] records, Number index, Object eOpts )

当有数据实例被添加时触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Operation operation, Object eOpts )

在一个新数据对象请求发出前触发此事件. 如果beforeload的处理函数返回'false', 数据请求将被取消.

Parameters

Ext.data.AbstractStore
( Object options, Object eOpts )

在执行sync调用之前触发此事件. 当有监听者返回'false'时取消同步.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Object eOpts )

removeAll方法调用之后触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Object eOpts )

当Store中的现有数据有任何形式的更改时触发此事件 - 包括了添加、删除数据, 或更改现有数据.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Model[] records, Boolean successful, Object eOpts )

每当store从远程数据源读取数据时触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Object meta, Object eOpts )

当store的底层reader对象(通过proxy对象调用)提供了新的元数据时触发此事件. 元数据通常由新的字段定义构成, 且可以包含系统所需的任意参数数据, 并可以根据需要由事件监听者处理. 此事件目前仅为JsonReader对象触发.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Object eOpts )

当数据缓存被整体修改(例如 排序,过滤等), 并且存在一个将当前Store作为记录缓存的组件需要刷新视图时触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Model record, Number index, Object eOpts )

当有数据实例被删除时触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Model record, String operation, String[] modifiedFieldNames, Object eOpts )

当有数据实例被更新时触发此事件.

Parameters

Ext.data.AbstractStore
( Ext.data.Store store, Ext.data.Operation operation, Object eOpts )

每当通过配置的Proxy代理完成写操作时触发此事件.

Parameters