Ext.data.DirectStore

Hierarchy

Inherited mixins

Requires

Files

一个小巧的帮助类,用于方便的从Ext.data.proxy.DirectExt.data.reader.Json创建Ext.data.Store。 用于与Ext.direct.Manager 的服务端Provider交互更容易。 创建一个不同的proxy/reader的组合 根据需要配置一个基本的Ext.data.Store

注意: 该类继承了以下所有的配置项,虽然没有列出来:

Defined By

Config options

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

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

Defaults to: false

允许Store去预取多页的数据并缓存在 page cache 中, 然后就可以通过页面缓存满足loading的需求.

使用 buffered Stores时, 加载第一页是就会启动缓冲的过程. 渲染的行数是自动确定的, 而且需要保持在cache中用于滚动的页面范围会被请求和缓存下来. Example:

// 加载第 1 页 myStore.loadPage(1);

一个 PagingScroller 会被实例化, 用来监听grid的滚动, 并在需要的时候从page cache中刷新 view的行. 也利用预取数据在视图滚动到两端附近 时将新的数据放入page cache中.

触发view从预取数据刷新的边界(margins)包括: Ext.grid.PagingScroller.numFromEdge, Ext.grid.PagingScroller.leadingBufferZone 以及 Ext.grid.PagingScroller.trailingBufferZone.

触发加载更多数据到 page cache 的边界(margins)包括: leadingBufferZonetrailingBufferZone.

默认情况下, 只有 5 个 page 的数据缓存在 page cache 中, 通过数据集的视图向下移动,页面会 "滚动" 出缓冲. 可以通过设置 purgePageSize 值来增加缓存的页数, 将这个值设为 0 则意味着没有页面是 曾经 滚动出page cache的范围, 而且最终可能整个数据集都会出现在 page cache中. 这有时是可取的,只要数据(datasets)没有达到天文数字的比例.

选择状态(Selection state)可以跨页保存下来, 通过配置 SelectionModel,当这些记录周期超出Store的主要集合(primary collection)时, 不要将其从集合中丢弃(discard). This is done 此时,可以像下面这样配置 SelectionModel :

selModel: {

   pruneRemoved: false

}

Defaults to: false

设置为 true 则当通过loadPagenextPagepreviousPage 来加载另一页时会清空 store. 设置为 false 则保持已存在的记录, 允许一次加载大量的数据集到一页中,但是渲染在一起.

Defaults to: true

如果设置为 true,则在store进行load数据时,清空 removed 记录列表里的所有数据.

Defaults to: true

本地加载的数组,或者Model 实例数组,或者数据对象数组. 详细信息请参考上面的 "内联数据".

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

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

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

在 grouping 时的排序方向. 值可以是 "ASC" 或者 "DESC".

Defaults to: "ASC"

需要分组的域. 在内部, grouping和sorting非常相似 - groupField 以及 groupDir 和第一个排序机(sorter,参见 sort)采用同样的注入方式. Stores 支持单层分组, 并且分组以后的 组(groups)可以通过 getGroups 方法获取.

每当表格请求重新渲染的行时,在返回请求行之后, Store会确保缓存中的数据涵盖两个区域所需的数据,如果数据不在缓存, 则会向服务器请求数据, 保持在可视区域下已渲染的记录数. ...

每当表格请求重新渲染的行时,在返回请求行之后, Store会确保缓存中的数据涵盖两个区域所需的数据,如果数据不在缓存, 则会向服务器请求数据, 保持在可视区域下已渲染的记录数. 一个更大的数字意味着需要从服务器补充(replenishments)的次数更少.

Defaults to: 200

一个配置对象,包含一个或多个事件处理函数,在对象初始化时添加到对象。 它应该是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'); }
        }
    }
});

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

组成一页'page'的记录数量. 当grig通过一个PagingScroller来分页时, 此参数用于内置的 nextPage 以及 previousPage 函数. 默认值是 25.

如果Store配置为buffered 的, 在 Store 的数据从cache更新之前, 页面(pages)就已经被加载到page cache 中了. pageSize就是一次请求加载到cache中的行数. 这不会影响到buffered grid的渲染(rendering), 但是page size大意味着加载次数少.

在一个 buffered grid 中, 滚动(scrolling)是被监听着的, 页面缓存(page cache)会准备好滚动前方的数据, 当继续滚动而需要时可以快速地得到这些数据. 根据几个参数可能会提前请求一些pages.

实际使用中,请根据您的应用程序的相关需求适当调整 pageSize, trailingBufferZone 以及 leadingBufferZone 配置项.

提供的 SDK 示例 examples/grid/infinite-scroll-grid-tuner.html 可以用来测试不同的设置,包括 Ajax 延迟.

此Store使用的Proxy. 可以配置为字符串(string), 配置对象(config object)或者是Proxy实例- 详细信息请查看 setProxy.

Overrides: Ext.data.AbstractStore.proxy

只在使用 buffered Store 时才有效.

在清除最近最少使用记录之前, 保持在预取缓存中 额外需要缓存 的页面数量.

例如, 根据视图区域的高度 以及 配置的 trailingBufferZone 和 leadingBufferZone 计算得出要在cache中缓存 3 个 pages, 那么设置 purgePageCount 为 5 则可以确保任意时刻最多可以有 8 个 page 在 page cache中.

值为 0 则表示从不清除预提取的数据.

Defaults to: 5

设置为 true 则将所有的过滤操作推迟到服务器. 如果设置为 false, 则在客户端本地过滤.

Defaults to: false

如果分组(grouping)应该在服务端执行,则设置为true,如果设置为false 则只在本地执行. If the 如果分组(grouping)是本地的,那么可以立即被应用到数据中. 如果是远程的, 则只会简单地扮演 helper, 自动发送 grouping 信息给 server.

Defaults to: false

设置为 true 则将所有的排序操作推迟到服务器. 如果设置为 false, 则在客户端本地排序.

Defaults to: false

只对本地过滤有效, 只要调用了 filter,就会导致 sort 被调用, 因此在过滤之后排序机将会被重新应用. ...

只对本地过滤有效, 只要调用了 filter,就会导致 sort 被调用, 因此在过滤之后排序机将会被重新应用. 默认值是 true

Defaults to: true

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

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

每当表格请求重新渲染的行时,在返回请求行之后, Store会确保缓存中的数据涵盖两个区域所需的数据,如果数据不在缓存, 则会向服务器请求数据, 保持在可视区域上的已渲染记录数. ...

每当表格请求重新渲染的行时,在返回请求行之后, Store会确保缓存中的数据涵盖两个区域所需的数据,如果数据不在缓存, 则会向服务器请求数据, 保持在可视区域上的已渲染记录数. 一个更大的数字意味着需要从服务器补充(replenishments)的次数更少.

Defaults to: 25

Defined By

Properties

扩展事件

Defaults to: []

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

Defaults to: "operation"

Store 最后一次load的页 (参见 loadPage)

Defaults to: 1

持有 store 的本地缓存记录的 对象集合(MixedCollection).

持有 store 的本地缓存记录的 对象集合(MixedCollection).

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

Defaults to: "memory"

默认的排序方向

Defaults to: "ASC"

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

Defaults to: true

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

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

当前应用到此Store的 Groupers 集合.

当前应用到此Store的 Groupers 集合.

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

本对象包含任何有监听器的事件的键。监听器可以在实例上直接设置, 或者在其类或者父类(通过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

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

Defaults to: true

如果 Store 当前正在通过 Proxy 加载数据则为 true

Defaults to: false

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

被删除的数据实例的临时缓存, 直到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'

快照,store中一个原始的 (未过滤的) 记录集合. 用来在filter发生改变或被删除时进行数据恢复.

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

Defaults to: true

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

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

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

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

Methods

Defined By

Instance Methods

创建store.

Parameters

  • config : Object (optional)

    配置对象

Returns

添加 Model 实例到 Store. 本方法接收的参数可以是:

  • 由 Model 实例 或者是 Model 配置对象 组成的数组.
  • 任意数量的 Model 实例 或者是 Model 配置对象;(可以是多个参数的情况).

新的 Model 实例将被添加到已存在的数据集合末尾.

用法示例:

myStore.add({some: 'data'}, {some: 'other data'});

注意: 如果 Store 已经排好序,则新的 Model 对象将被插入到适当的位置,以保持排序顺序.

Parameters

  • model : Ext.data.Model[]/Ext.data.Model...

    可以是由 Model 实例/配置对象 组成的数组, 也可以是任意数量的 Model 实例,或者配置对象 组成的多个参数.

Returns

( 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

(只用于本地排序) 根据当前的排序规则,将给定的记录插入到Store中适当的位置.

Parameters

( Object xtype )private

添加 Xtype

Parameters

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

Parameters

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

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

Parameters

  • record : Ext.data.Model

    被编辑的数据实例

  • modifiedFieldNames : String[]

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

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

Parameters

( Function fn, [Object scope], [Boolean grouped], [Array args] ) : Object

以store中的所有记录为基础来运行aggregate(汇总)函数 .

如果store有过滤器, 则只有过滤后的数据会被汇总(aggregated).

Parameters

  • fn : Function

    要执行的函数. 此函数被调用时将会收到单个参数,即所在组的数据组成的数组.

  • scope : Object (optional)

    要执行函数的作用域. 默认就是 store对象.

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而分组的相关数据将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

  • args : Array (optional)

    要附加到函数调用(function call)的所有参数

Returns

  • Object

    组名以及适当的值组成的字面量对象.

获取 store 中Model的某个域的平均值.

如果store有过滤器,则只有过滤后通过的元素会被计算进来。

Parameters

  • field : String

    要进行统计的每条记录里的域

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由group name 作为key,而分组的平均值(group average)将会成为对应值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

  • Object

    平均值, 如果没有 items 存在,则返回 0.

在 prefetch 时,缓存记录 and 根据服务端的 index 进行分页.

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

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

取消所有等待中的预取请求.

当 page map 被清空是会被调用.

当前的所有请求都会打上 上一代的标签. (generation代 会随着 clear操作增长), 并拒绝迟来的上代数据.

清空过滤器,将 Record cache 恢复到没有过滤的情况.

Parameters

  • suppressEvent : Boolean

    如果设置为 true,则会静默清除.

    对于使用本地过滤的 Store, 意味着清空 filter 集合,却不触发任何 datachanged 事件.

    对于使用服务端过滤的 Store, 意味着清空 filter, 却不重新从服务端加载数据.

清空此store内部所有的groupers(分组对象)

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

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

( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Object[]

获得指定的dataIndex对应的那一列的独特值.

Parameters

  • dataIndex : String

    要收集的属性

  • allowNull : Boolean (optional)

    传入 true 则允许返回 null, undefined 以及 空字符串

  • bypassFilter : Boolean (optional)

    传入 true 则结果不受过滤器的影响,从所有记录中获取.

Returns

  • Object[]

    指定列数据组成的数组

提交所有 未完成更改(outstanding changes) 的记录. 要自己处理变化记录的更新,监听 Store 的 update 事件, 并且当第三个参数是 Ext.data.Record.COMMIT 的时候执行更新.

( String eventName, Array args, Boolean bubbles )private

Continue to fire event.

Parameters

获取 store 中Model的数量.

如果store有过滤器,则只有过滤后通过的元素会被计算进来。

Parameters

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而分组的记录数量(count)将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

( String property, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive], [Boolean exactMatch] )private

返回一个 filter 函数,用来过滤给定的属性的值. 大部分依赖 Ext.util.MixedCollection 的 createValueMatcher 方法的功能.

Parameters

  • property : String

    要创建过滤函数的属性

  • value : String/RegExp

    要根据 string/regex 来对比属性值

  • anyMatch : Boolean (optional)

    如果不需要完全匹配,则设置为 true.

    Defaults to: false

  • caseSensitive : Boolean (optional)

    如果设置为 true,则创建区分大小写的正则, case-sensitive regex.

    Defaults to: false

  • exactMatch : Boolean (optional)

    如果需要完全匹配,则设置为 true (会在正则表达式中 添加^ and $ 字符). 如果 anyMatch 设置为 true 则忽略此参数.

    Defaults to: false

转换字面量对象为model, 如果此对象不是 model 对象

Parameters

Returns

( 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.util.Filter类的实例.

Parameters

  • filters : Object[]

    过滤器数组

Returns

私有方法, 转化(Normalizes,正常化) 一个grouper对象组成的数组, 确保他们都是 Ext.util.Grouper 的实例.

Parameters

  • groupers : Object[]

    组grouper对象 数组

Returns

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

Parameters

  • sorters : Object[]

    The sorters array

Returns

为 Store中的每条记录 record 调用指定的函数.

如果store有过滤器, 则只对过滤后的数据进行调用.

Parameters

  • fn : Function

    要调用的函数. 传给此函数的第一个参数是 Record. 返回 false 则取消,并退出整个迭代过程.

  • scope : Object (optional)

    函数执行的作用域(即this 引用). 默认是迭代之中的当前记录 record .

通过调用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

根据给定的过滤器集合,对已加载的记录进行过滤.

默认情况下, 传入的单/多个 filter(s) 都被 添加 到 filters 集合中,并用来对 Store 过滤.

在应用新的 filters集合之前, 如果要清除已存在的 filters,请使用:

// 清除过滤器而不更新界面(UI)
store.clearFilter(true);

详情请参考 (@link clearFilter}.

另外, 如果 filters 设置了 id, 那么store 会用新的 filters 替换 具有相同 id 的已存在的 filters.

根据单个属性域(field)过滤:

store.filter("email", /\.com$/);

根据多个属性域(field)过滤:

store.filter([
    {property: "email", value: /\.com$/},
    {filterFn: function(item) { return item.get("age") > 10; }}
]);

可以使用 Ext.util.Filter 实例, 而不是 配置对象. (注意 在此种情况下我们需要指定 root 配置项):

store.filter([
    Ext.create('Ext.util.Filter', {property: "email", value: /\.com$/, root: 'data'}),
    Ext.create('Ext.util.Filter', {filterFn: function(item) { return item.get("age") > 10; }, root: 'data'})
]);

如果store有过滤器, 那么访问store数据的大部分方法所处理的都是过滤后的记录. 两个值得注意的例外是 queryBygetById.

Parameters

  • filters : Object[]/Ext.util.Filter[]/String

    要对数据使用的过滤器集合. 过滤器会被存储着 store 内部, 但是过滤本身是在 Store 的 MixedCollection 中发生的. 关于 filter 的语法请参考 MixedCollection 的 filter 方法. 否则, 请传入一个表示属性名的字符串

  • value : String (optional)

    用来过滤的值 (只有第一个参数是代表属性域名字的string的情况)

由函数来执行过滤. 指定的函数将由Store 中的每一条记录调用. 如果函数返回 true 则将记录包含进来,否则将被过滤掉.

如果store有过滤器, 那么访问store数据的大部分方法所处理的都是过滤后的记录. 两个值得注意的例外是 queryBygetById.

Parameters

  • fn : Function

    要被回调的函数. 调用时将会传入以下参数:

    Parameters

  • scope : Object (optional)

    函数执行的作用域(即this 引用). 默认是当前store.

新数据记录的过滤方法

Parameters

对修改数据的过滤函数.

Parameters

( String fieldName, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive], [Boolean exactMatch] ) : Number

根据指定的属性域,以及指定的值,找出第一条匹配的记录的索引 index.

如果store有过滤器, finds 在过滤后的数据中.

Parameters

  • fieldName : String

    要查找的属性域 名字.

  • value : String/RegExp

    可以是需要匹配的string,或者是正则表达式. 如果是字符串, 则需要以此string开始 才会匹配.

  • startIndex : Number (optional)

    起始搜索位置的索引

    Defaults to: 0

  • anyMatch : Boolean (optional)

    设置为 true,则只要匹配一部分就行, 不再强制必须以 value 参数开头.

    Defaults to: false

  • caseSensitive : Boolean (optional)

    如果设置为 true,则进行区分大小写的对比

    Defaults to: false

  • exactMatch : Boolean (optional)

    设置为 true 则强制完全匹配 (会在正则表达式中 添加^ and $ 字符)

    Defaults to: false

Returns

  • Number

    找到的记录索引 或者 -1

( Function fn, [Object scope], [Number startIndex] ) : Number

在 Store中根据一个函数来找出第一条匹配的记录. 如果函数返回 true 则被认为有匹配记录.

如果store有过滤器, 则只在过滤后的数据中查找.

Parameters

  • fn : Function

    要被回调的函数. 调用时将会传入以下参数:

    Parameters

  • scope : Object (optional)

    函数执行的作用域(即this 引用). 默认是当前store.

  • startIndex : Number (optional)

    开始查找的索引,偏移

    Defaults to: 0

Returns

  • Number

    匹配的记录index 或者-1

( String fieldName, Object value, [Number startIndex] ) : Number

根据指定的属性域,以及指定的值,找出第一条匹配记录的index.

如果store有过滤器, 则只在过滤后的数据中查找.

Parameters

  • fieldName : String

    要查找的属性域名字.

  • value : Object

    属性域对应的要匹配的值.

  • startIndex : Number (optional)

    开始查找的索引,偏移

    Defaults to: 0

Returns

  • Number

    匹配的记录index 或者 -1

( String fieldName, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive], [Boolean exactMatch] ) : Ext.data.Model

根据指定的属性域,以及指定的值,找出第一条匹配的记录。

如果store有过滤器, 则在过滤后的数据中进行查找.

Parameters

  • fieldName : String

    要查找的属性域 名字.

  • value : String/RegExp

    可以是需要匹配的string,或者是正则表达式. 如果是字符串, 则需要以此string开始 才会匹配.

  • startIndex : Number (optional)

    起始搜索位置的索引

    Defaults to: 0

  • anyMatch : Boolean (optional)

    设置为 true,则只要匹配一部分就行, 不再强制必须以 value 参数开头.

    Defaults to: false

  • caseSensitive : Boolean (optional)

    如果设置为 true,则进行区分大小写的对比

    Defaults to: false

  • exactMatch : Boolean (optional)

    设置为 true 则强制完全匹配 (会在正则表达式中 添加^ and $ 字符)

    Defaults to: false

Returns

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

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

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

Parameters

  • eventName : String

    待触发的事件名。

  • args : Object...

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

Returns

  • Boolean

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

触发 groupchange 事件. 抽象出来(Abstracted out) 以便我们可以用来作为回调

( [Boolean grouped] ) : Ext.data.Model/undefined

获取store中第一条记录的快捷方法.

如果store有过滤器, 将会返回过滤后的第一条记录.

Parameters

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而第一条记录将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

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

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

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

获取指定index处的记录.

index 受过滤器的影响.

Parameters

  • index : Number

    要查找的记录的index.

Returns

  • Ext.data.Model

    传入 index 处的记录Record. 如果没有找到则返回 undefined.

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

Returns

  • Object

    监听(listeners)对象.

Gets the bubbling parent for an Observable

Returns

通过指定的 id 获取记录.

此方法不受过滤器的影响; 将会从store的所有记录中进行查找,无论是否被过滤.

Parameters

  • id : Mixed

    要查找的记录的 id.

Returns

( Object name )private

得到配置项

Parameters

获取store中记录的数量.

如果使用分页, 则返回的可能不是 dataset 的总的大小. 如果 Reader 使用的数据对象包含了 dataset 大小, 则可以使用 getTotalCount 函数来取得所有个数. 重要提示: 请参考 load 查看注意事项.

受过滤器的影响, 如果指定了filter,则返回匹配过滤规则的记录的数量.

Returns

  • Number

    store中记录的数量.

返回由配置项grouper 所分分组组的记录. (在一个虚构的书本集合中,先按类型,再按作者分组)返回的数据示例如下:

[
    {
        name: 'Fantasy',
        depth: 0,
        records: [
            //book1, book2, book3, book4
        ],
        children: [
            {
                name: 'Rowling',
                depth: 1,
                records: [
                    //book1, book2
                ]
            },
            {
                name: 'Tolkein',
                depth: 1,
                records: [
                    //book3, book4
                ]
            }
        ]
    }
]

Parameters

  • sort : Boolean (optional)

    设置为 true 则在查找 group 之前调用 sort. 在分组时总是需要排序的,所以只有能确认已经排好序了才应该传入false.

    Defaults to: true

Returns

为传入的model实例取得分组时要使用的string. 默认实现是返回模型的分组域 groupField, 但可以根据需要进行重写. 例如,要根据 model 的 'name' 属性域的首字母来进行分组,可以使用如下代码:

Ext.create('Ext.data.Store', {
    groupDir: 'ASC',
    getGroupString: function(instance) {
        return instance.get('name')[0];
    }
});

Parameters

Returns

  • String

    在分组时进行比较的string

返回一个数组,该数组包含对此store使用分组得到的 组对象. 参见 groupField, groupDir 以及 getGroupString. 下面是包含color域的Model组成的一个store示例:

var myStore = Ext.create('Ext.data.Store', {
    groupField: 'color',
    groupDir  : 'DESC'
});

myStore.getGroups(); // 返回的结果如下:
[
    {
        name: 'yellow',
        children: [
            // 所有 color域的值是 'yellow' 的记录
        ]
    },
    {
        name: 'red',
        children: [
            // 所有 color域的值是 'red' 的记录 
        ]
    }
]

Group 内容受过滤器的影响 .

Parameters

  • groupName : String (optional)

    传入可选的 groupName 参数来获取指定的那一个分组 group as defined by getGroupString.

Returns

根据给定的 record 集合以及一个 Grouper, 返回一个由数组组成的数组 - 其中的每个数组都是匹配给定分组的记录集合. ...

根据给定的 record 集合以及一个 Grouper, 返回一个由数组组成的数组 - 其中的每个数组都是匹配给定分组的记录集合.

Parameters

本方法用于递归地收集记录到配置的 Groupers中. 要让本方法正常工作,数据 必须 是排序好的. (参见 getGroupData 以及 getGroupsForGrouper) 大部分工作是由 getGroupsForGrouper 完成的- 该函数只是该处理递归.

Parameters

  • records : Ext.data.Model[]

    要分组的集合或子集合

  • grouperIndex : Number

    要获取的grouper 索引

Returns

得到初始化配置项

Parameters

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

Returns

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

Returns

根据记录的索引,决定其页码

Parameters

  • index : Number

    记录的索引

Returns

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

Returns

( [Number startIndex], [Number endIndex] ) : Ext.data.Model[]

返回指定索引范围内的记录.

本方法受过滤器的影响.

Parameters

  • startIndex : Number (optional)

    开始索引 index

    Defaults to: 0

  • endIndex : Number (optional)

    结尾索引 index. 默认是Store中最后一条记录的index.

Returns

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

Returns

返回由Proxy 表明存在的所有 Model 实例的全部数量. 在使用分页时,此方法和 getCount 通常是不同的 - getCount 返回的是当时加载到 Store的记录数量, getTotalCount 返回的是可以被加载到 Store 中的记录的数量, 如果 Store 包含了所有数据的话.

Returns

  • Number

    通过 Proxy 可以获取到的所有 Model的数量. 如果reader没有得到值则返回 0.

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

Returns

( String/Object[] groupers, [String direction] )

对store 内部的数据进行分组.

Parameters

  • groupers : String/Object[]

    可以是为 Store 配置的 Model 的一个属性域的名字string,

     也可以是由grouper configurations组成的数组.
    
  • direction : String (optional)

    要分组数据的方向(升序,降序).

    Defaults to: "ASC"

保证一个指定的范围, 这将为Store加载一定范围的数据 (小于等于 pageSize ), 并关注可能需要加载的数据范围. ...

保证一个指定的范围, 这将为Store加载一定范围的数据 (小于等于 pageSize ), 并关注可能需要加载的数据范围.

Parameters

( Object config )private

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

Parameters

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

Parameters

  • eventName : String

    待检查的事件名

Returns

  • Boolean

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

查找记录在store中的 index.

本方法受过滤器的影响,没通过过滤的记录不会被发现.

Parameters

Returns

  • Number

    传入记录对应的索引 index. 如果没找到则返回 -1.

根据传入的 id,取得store中记录的索引 index.

indexOf 方法一样, 本方法也受 过滤器的影响.

Parameters

  • id : String

    要查找的记录的 id.

Returns

  • Number

    记录的索引 index. 如果没找到则返回 -1.

查找记录在整个数据集中的 index. 从 0 到 totalCount.

indexOf 方法一样, 本方法也受 过滤器的影响.

Parameters

Returns

  • Number

    传入记录对应的索引 index. 如果没找到则返回 -1.

( 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 混入原型 键-值对

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

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

从给定的索引处开始,插入 Model 实例;并触发 add 事件. 也可以参考 add.

Parameters

如果 store 当前是已经过滤后的,则返回 true.

Returns

判断store当前是否已经分组了

Returns

  • Boolean

    如果已经分组则返回 true.

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

Returns

  • Boolean

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

( [Boolean grouped] ) : Ext.data.Model/undefined

获取store中最后一条记录的快捷方法.

如果store有过滤器, 将会返回过滤后的最后一条记录.

Parameters

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而最后一条记录将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

通过配置的 proxy 加载数据到Store 中. 使用 Proxy 来执行异步调用,不关心具体的Proxy是什么类型, 自动添加获得的实例到 Store 中,如有需要,会调用传入的回调函数. 用法示例如下:

store.load({
    scope: this,
    callback: function(records, operation, success) {
        // 对象 operation 包含
        // 所有 load 操作的详细信息
        console.log(records);
    }
});

如果不需要指定回调函数的作用域(scope),则可以直接像下面这样传递:

store.load(function(records, operation, success) {
    console.log('loaded records');
});

Parameters

  • options : Object/Function (optional)

    配置对象, 在加载之前会传入 Ext.data.Operation 对象中. 可以指定一个配置项: addRecords: true 来将新的记录附加到已存在的记录中, 因为默认情况下会先删除 Store 中所有已存在的数据.

Overrides: Ext.data.AbstractStore.load

直接加载一个数组的数据到 Store 中.

如果数据的格式已经处理好,那么可以使用此方法 (例如. 不必需要 reader 处理的数据). 如果你的数据还需要处理,那么请使用 MemoryProxy .

Parameters

  • data : Ext.data.Model[]/Object[]

    要加载的数据. 所有 non-model 实例都会首先被转换为 model 实例.

  • append : Boolean (optional)

    如果设置为 true 则将这些记录添加到已存在的记录中, 如果为 false 则会先删除原来的记录.

    Defaults to: false

加载给定 'page' 的数据,通过适当地设置 start 以及 limit 的值. 在本方法内部只是 传入计算后的 'start' 与 'limit' 配置项 执行一个普通的 load 操作.

Parameters

  • page : Number

    要加载的 page ,数字

  • options : Object

    参考 load 的配置选项

通过绑定的 Proxy's reader 加载数据 如果想要利用配置好的 reader 来加载数据,则可以使用此方法. ...

通过绑定的 Proxy's reader 加载数据

如果想要利用配置好的 reader 来加载数据,则可以使用此方法.

Parameters

  • data : Object[]

    要加载到 Data store中的完整的 JSON 对象.

  • append : Boolean (optional)

    如果设置为 true 则将这些记录添加到已存在的记录中, 如果为 false 则会先删除原来的记录.

    Defaults to: false

载入由 model 实例组成的数组到 store 中, 触发 datachanged 事件. 此方法通常只应该在从 Proxy 中加载数据时由内部调用, 如果要手动的增加记录,请使用 add 方法.

Parameters

  • records : Ext.data.Model[]

    要加载的记录(数组)

  • options : Object

    如果设置{addRecords: true},则将这些记录添加到已存在的记录中, 如果为 false 则会先删除原来的记录.

( String field, [Boolean grouped] ) : Object

获取 store 中Model的某个域的最大值.

如果store有过滤器,则只有过滤后通过的元素会被计算进来。

Parameters

  • field : String

    要进行统计的每条记录里的域

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而分组的最大值(maximum)将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

  • Object

    最大值, 如果没有 items 存在,则返回 undefined.

( String field, [Boolean grouped] ) : Object

获取 store 中Model的某个域的最小值.

如果store有过滤器,则只有过滤后通过的元素会被计算进来。

Parameters

  • field : String

    要进行统计的每条记录里的域

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而分组的最小值(minimum)将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

  • Object

    最小值, 如果没有 items 存在,则返回 undefined.

( 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引用的上下文) 事件处理函数执行的作用域。

在当前的数据集中加载下一页 'page'

Parameters

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

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

Parameters

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

Parameters

( Object names, Object callback, Object scope )private

更新配置项

Parameters

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

Parameters

( Object fn, Object scope )private

扩展事件

Parameters

对保证范围的数据被加载时进行处理

Parameters

( Object operation )private

私有函数,当Proxy完成一个load请求以后,在内部调用

Parameters

在配置的 proxy 完成预取操作之后调用.

Parameters

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

判断给定的 page 在page cache中是否是可用的.

Parameters

  • page : Number

    要在page cache中查找的page.

通过配置的 proxy 预取数据到 Store中.

Parameters

预取某页的数据.

Parameters

预取指定范围的行,使得指定范围的 rows 存在于 cache 中.

将 row 范围转换为 page 范围,并且只去加载当前不在 page cache中的页.

Parameters

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

Parameters

在当前的数据集中加载上一页 'page'

Parameters

使用过滤函数来 查询 Store 中所有缓存的记录. 指定的函数将由Store 中的每一条记录调用. 如果函数返回 true 则将记录包含进结果集中.

此方法不受过滤器的影响; 将会从store的所有记录中进行查找,无论是否被过滤.

Parameters

  • fn : Function

    要被回调的函数. 调用时将会传入以下参数:

    Parameters

  • scope : Object (optional)

    函数执行的作用域(即this 引用) 默认是当前store.

Returns

判断给定的范围在page cache中是否是可用的.

Parameters

  • start : Number

    开始的索引index

  • end : Number

    范围结束的索引(含)

( Number start, Number end )deprecatedprivate

判断传入的范围在 page cache中是否可用.

This method has been deprecated since 4.1.0

使用 rangeCached 来代替此方法

Parameters

Rejects 丢弃所有 modified records 上未完成的更改(outstanding changes). 并重新插入所有本地删除的数据. 所有虚幻(phantom)的记录都将被移除.

( 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'事件。

从 Store 中删除给定的记录, 对每条删除的记录都会触发一次 'remove' 事件. 在此次的所有数据删除完成后,会触发一次 'datachanged' 事件.

Parameters

从 store 中移除所有的条目.

Parameters

  • silent : Boolean

    安静模式,阻止 clear 事件触发.

Overrides: Ext.data.AbstractStore.removeAll

删除给定 index 处的 model 实例

Parameters

  • index : Number

    记录的索引

移除事件处理函数。

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

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

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

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

通过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

( String field, [Boolean grouped] ) : Number
对每个start与 end 之间的 record 记录 的某个属性 property 计算和值, 并返回结果. ...

对每个startend 之间的 record 记录 的某个属性 property 计算和值, 并返回结果.

如果store有过滤器, 则只计算过滤后记录的总和.

Parameters

  • field : String

    要进行统计的每条记录里的域

  • grouped : Boolean (optional)

    设置为true在对store中的所有分组执行操作. 此时返回的值将会是一个对象,由 group name 作为key,而分组的总和(sum)将会成为对应的值. 参数 grouped 只有当store 拥有 groupField时才需要使用.

Returns

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

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

Parameters

  • queueSuspended : Boolean

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

同步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

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

Parameters

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

Parameters

在预取操作之前触发. 返回 false 则取消操作.

Parameters

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

Parameters

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

Parameters

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

Parameters

只要 grid 中的分组一改变就触发

Parameters

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

Parameters

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

Parameters

( Ext.data.Store this, Ext.data.Model[] records, Boolean successful, Ext.data.Operation operation, Object eOpts )

在预取操作完成之后触发

Parameters

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

Parameters

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

Parameters

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

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

Parameters

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

Parameters