`
solon.jar
  • 浏览: 45368 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Ext.Store的获取方法

    博客分类:
  • Ext
阅读更多

         一直都是这样定义store的:

 

        var store = new Ext.data.JsonStore({    });

        store.load();

        但是最近在改进自己的Ext设计方法的时候(也就是使用Ext的extend来实现继承的设计方法),却遇到了无法获取Store的问题。看下面的代码:

 

        Leangle.form.combo.ColorComboBox = Ext.extend(Leangle.form.BaseComboBox,{
                     id : "combo_color",
                    name:'colorId',
                    hiddenName:'colorId',
                    valueField : "colorId",
                   displayField : "colorName",
                   fieldLabel : "颜色",
                   store:new Ext.data.JsonStore({
                             id:'store_color',
                             url : "whInput!getColorList.action",
                            method : "post",
                            root : "ColorList",
                            fields : ["colorId", "colorName"],
                            autoLoad : true
                  })
});

               我把Store的定义放在了ComboBox里面,给Store赋予了id。于是我是想当然地认为只要使用

                Ext.getCmp('store_color');这个方法就应该可以获取到这个Store。可是我测试了多遍,发现获取到的是一个undefined的对象,也就是说,获取不到,或者说,页面根本就不存在这个对象。

                奇怪,检查了一遍API文档,Componont类明明写着getCmp()方法可以获取到Ext封装的组件。而Store也并Ext认为属于组件部分。那为什么我用getCmp()却获取不到这个对象呢???

                问题来了~其实在很早之前我就有个疑问。Ext设计的控件其实最底层还是封装了<div>和css, 你说外观嘛,有外观的控件当然可以用div和css来显示,但是store可不是一个有外观的控件,它没有表现形式,只是一个普通的用来存储数据的对象而 已。如果是以div的形式保存在页面的话,那么数据在哪里?而且一个div也不可能保存store中的数据吧?这样会非常危险的。因为查看源码就会暴露 store中的数据,这对于数据权限控制是不利的。那store究竟在哪里呢?在内存中?

                深入一步。从getCmp()的源码中可以理解到。getCmp()其实就是获取这个页面上的某个div。按照这样想下去就有点吻合了。Store如果不 是保存在页面的话,那么就肯定是保存在内存中(而这也符合对数据的保护)。另一方,Store如果不是保存在页面的话,那么getCmp()当然也就不能 获取到它了。

              再深入一步,查看Store的API,发现一个很奇怪的问题,Store并没有id,取而代之的是storeId这样的一个属性。对于这个storeId的描述是:

 

 

If passed, the id to use to register with the StoreMgr .

Note: if a (deprecated) id is specified it will supersede the storeId assignment.

              大概意思是说:如果store成功初始化了,它的id将会被注册到一个叫StoreMgr(StoreManager的简写)的对象中。注意:如果id被指明的话,将会取代storeId。

             store会被注册到一个叫StoreMgr的对象中?那我们就看看这个对象是何方神圣!!!

             StoreMgr: Class Ext.StoreMgr

                                 The default global group of stores。//默认的全局Store组

                                 This class is a singleton and cannot be created directly。这个类是唯一的,不能直接创建。

             估计看到这里,大家都明白了,这个StoreMgr对象就是用来管理Store的。也就是说,这个对 象在Ext初始化之后,就存在了,采用单例模式,并负责store的存储和管理工作。这个对象估计就是存储在内存中的。我们声明的Store被保存到这里 来了,所以页面也就找不到了。

              综上所述,Store可以用以下方法获取到:

             Ext.getCmp('combo_color').store;//通过引用这个store的控件来获取这个store

             Ext.StoreMgr.get('store_color');  //通过这个全局store管理器来获取

             问题解决。

分享到:
评论

相关推荐

    Ext.data.Store的基本用法

    本文详细介绍了`Ext.data.Store`的基本用法,包括创建实例、数据转换、排序操作以及如何从`store`中获取数据。通过掌握这些基本知识,开发者可以更加灵活地使用`Ext.data.Store`来处理各种数据需求。

    Ext.data.Store 读取XML属性值

    在处理数据时,`Ext.data.Store`是一个至关重要的组件,它用于存储和管理数据,可以与各种数据源进行交互。当我们需要从XML文档中提取数据并加载到`Store`时,就涉及到`Ext.data.reader.Xml`。这篇博客文章《Ext....

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    动态加载本地数据到`Ext.Panel`通常涉及到异步请求,使用`Ajax`或`Store`的`load`方法,通过URL获取JSON或XML格式的数据,并将其渲染到面板内。 例如: ```javascript var panel = Ext.create('Ext.Panel', { ...

    可编辑表格Ext.grid.EditorGridPanel

    1. 数据绑定:EditorGridPanel通过Store获取数据,Store可以与服务器端进行数据交换。 2. 编辑模式:当用户点击单元格时,对应的编辑器会显示出来,用户可以在编辑器中输入新值。 3. 提交更改:编辑完成后,...

    Ext.grid.GridPanel属性祥解

    5. **reconfigure(Ext.data.Store store, Ext.grid.ColumnModel colModel)** - 说明:使用新的数据集和列模型重新配置表格。 - 示例:`reconfigure(new Ext.data.JsonStore(...), new Ext.grid.ColumnModel([...])...

    ext-tree.rar_ext_ext tr_ext tre_ext.tr_ext.tree

    3. **数据存储**:创建一个数据存储(Ext.data.Store),并配置其URL以连接到后端服务,用于获取或更新数据。 4. **右键菜单**:实现右键菜单(Ext.menu.Menu),定义菜单项,绑定点击事件处理函数。 5. **事件...

    [Ext 3.x + Ext 2.x] 下拉树 Ext.ux.ComboBoxTree

    1. `store`:定义数据存储对象,可以是Ext.data.TreeStore,用于保存树形结构的数据。 2. `displayField`:指定显示在下拉框中的字段,通常是从树节点数据中提取的属性。 3. `valueField`:选择后记录的值,通常是树...

    EXT GridPanel获取某一单元格的值

    ` 从GridPanel的Store(数据源)中获取当前行的数据记录(Record)。 - `grid.getColumnModel().getDataIndex(columnIndex);` 根据列索引获取该列的字段名。EXT GridPanel的列模型(ColumnModel)提供了此方法来...

    chrome.ext.7z下载

    总的来说,"chrome.ext.7z"提供了一种方便的方式来获取和安装非官方的Chrome扩展,但用户在使用时应谨慎对待,确保安全性并遵循正确的安装步骤。同时,了解Chrome扩展的工作原理和安全注意事项,也是保障网络浏览...

    深入浅出Ext.JS.徐会生等

    接着,书中详细讲解了Ext.JS的数据管理,包括Store、Model和Proxy等概念。Store是数据容器,负责存储和管理数据;Model定义了数据结构和验证规则;Proxy则是与服务器交互的桥梁,支持Ajax和JSONP等多种数据获取方式...

    Ext.data专题

    它定义了一系列的核心概念,包括 **Store**、**Reader** 和 **Proxy**,这些都是Ext.data的核心组成部分。通过这些概念,开发者能够轻松地管理应用程序中的数据流。 - **Store**:负责存储数据并提供一系列API来...

    Ext4.0 动态修改ComboBox选择项(本地模式)

    在本地模式下,ComboBox的数据通常存储在本地,如JavaScript数组中,而不是从远程服务器获取。这样可以提高应用的响应速度,减少网络请求。 要实现动态修改ComboBox的选择项,你需要了解以下几个关键步骤: 1. **...

    Ext Js权威指南(.zip.001

    7.5.4 ext.data.store加载数据的方法 / 350 7.5.5 ext.data.treestore加载数据的方法 / 354 7.5.6 store的配置项 / 358 7.5.7 store的分页 / 359 7.5.8 store的排序:ext.util.sorter与ext.util.sortable / 360...

    ext 基本知识-store-proxy-reader-ext-connection-实例

    总结起来,本篇内容涵盖了ExtJS中的核心数据组件,包括Ext.data.Connection的使用、Ext.data.Record的创建与操作、Ext.data.Store的配置以及数据交互的Proxy和Reader机制。这些知识是构建基于ExtJS的异步数据驱动...

    Ext.Direct.Mvc是ASP.NET Mvc.的Ext Direct服务器端堆栈的实现.zip

    Ext Direct提供了一种标准化的方式来定义服务端的方法,这些方法可以直接在客户端的JavaScript中调用,极大地简化了前后端通信的过程。 在ASP.NET MVC中,控制器(Controller)和动作方法(Action Methods)是处理...

    ExtJs grid多选时获取选中的所有值

    通过使用`CheckboxSelectionModel`,我们可以轻松地为Grid添加多选功能,并通过`getSelections()`方法获取所有选中行的数据。这对于实现常见的批量操作功能非常有帮助。此外,还可以结合其他事件处理逻辑,实现更...

    关于extjs ext.tree

    下面我们将详细讨论`ext.tree`的主要特性与使用方法: 1. **配置项**: - `root`: 树的根节点,可以设置为一个TreeNode对象或者配置对象。 - `store`: 存储树数据的Store对象,通常使用TreeStore来管理节点数据。...

    深入浅出Ext_JS:数据存储与传输

    本篇将重点讲解Ext.data模块,包括其基本概念、主要组件以及如何进行数据的获取和处理。 10.1 Ext.data简介 Ext.data是一个专门处理数据的模块,它包含了store、reader和proxy等组件,这些组件协同工作以确保数据在...

    EXT中文开发手册

    中文API文档 数据存储与传输 Ext.data简介 Ext.data.Connection Ext.data.Record Ext.data.Store 基本应用 对数据进行排序 从store中获取数据 更新store中的数据

Global site tag (gtag.js) - Google Analytics