控制器中获取store
在Controller中要获取View中的选中值我用
[javascript] view plaincopyprint?
var cmp = Ext.ComponentQuery.query('weldlist')[0].getSelectionModel();
可是当我需要获取View中的非选中值时,找了找似乎没有直接的方法,那么只能获取页面的Store全数据,突然发现这里不知道怎么获取了,看API加上度娘谷哥找到一些方法,mark一下助人助己。
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的描述是:
[javascript] view plaincopyprint?
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的对象中?那我们就看看这个对象是何方神圣!
[javascript] view plaincopyprint?
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可以用以下方法获取到:
[javascript] view plaincopyprint?
Ext.getCmp('combo_color').store;//通过引用这个store的控件来获取这个
Ext.StoreMgr.get('store_color'); //通过这个全局store管理器来获取 (store_color 是store_id)
控制器中获取store的更多相关文章
- MVC 在控制器中获取某个视图动态的HTML代码
ASP.NET MVC 在控制器中获取某个视图动态的HTML代码 如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中, ...
- MVC教程二:从控制器中获取URL的值
一.从控制器中获取URL的值有三种方式: 1.使用Request.QueryString[] 例如: string value = Request.QueryString["BookId&q ...
- 控制器中获取Field值
在ASP.NET MVC程序中,我们需要POST Data到制器中,是有很多方法.但是我们想在控制器中,获取Feild值呢?怎样获取?你可以留意到有一个类FormCollection.它能帮助到我们解 ...
- 在ASP.NET MVC控制器中获取链接中的路由数据
在ASP.NET MVC中,在链接中附加路由数据有2种方式.一种是把路由数据放在匿名对象中传递: <a href="@Url.Action("GetRouteData&quo ...
- ASP.NET在MVC控制器中获取Form表单值的方法
在网站开发中我们经常需要用到表单,那么,在前台页面的表单中提交到后台控制器后,后台控制器如何接收表单提交过来的数据呢?下面我们介绍几种常用的方法. 我们先看看前台页面,这里我们用一个用户名和密码的表单 ...
- larave 控制器中获取路由参数
Laravel中获取路由参数Route Parameters的五种方法示例 作者:SeekerLiu 这篇文章主要给大家介绍了关于Laravel中获取路由参数Route Parameters的五种方法 ...
- ASP.NET MVC 在控制器中获取某个视图动态的HTML代码
如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中,然后通过代码传入model,动态获取cshtml中的HTML代码 当然 ...
- ASP.Net MVC 在控制器中获取View中的form表单值的方法
在网站开发中,我们常常需要用到表单提交的方式,那么在MVC中是如何获取到表单中的数据呢?下面我们来介绍以下几种方式 首先我们先看看View前台页面 添加一个控制器 我们再看看前台页面的代码 @{ La ...
- laravel 控制器中获取不到session
protected $middleware = [ \Illuminate\Session\Middleware\StartSession::class, ]; 在 kernel.php中 加入Sta ...
随机推荐
- c++11 新特性之lambda表达式
写过c#之后,觉得c#里的lambda表达式和delegate配合使用,这样的机制用起来非常爽.c++11也有了lambda表达式,形式上有细小的差异.形式如下: c#:(input paramete ...
- Azure 删除VHD时报错:There is currently a lease on the blob and no lease ID was specified in the request
可下载:http://clumsyleaf.com/products/cloudxplorer 然后在Accounts中新建一个Account,账号与Key,可在相应的storage Manage A ...
- namenode metadata 备份与恢复实验
https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#dfsadmin -me ...
- 聚合数据董铭彦:小程序开发的兴起将带火API数据交易
2016中关村大数据日活动近日在京举办,今年新进驻北京的聚合数据受邀参与,在13日举行的大数据交易专场论坛上,聚合数据副总裁董铭彦与参会嘉宾以"共筑数据交易产业生态,共享大数据时代红利&qu ...
- Web报表页面如何传递中文参数
1.场景描述 在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如: <iframe id="report ...
- [转]SQL 操作结果集 -并集、差集、交集、结果集排序
本文转自:http://www.cnblogs.com/kissdodog/archive/2013/06/24/3152743.html 操作结果集 为了配合测试,特地建了两个表,并且添加了一些测试 ...
- 第8章 用户模式下的线程同步(1)_Interlocked系列函数
8.1 原子访问:Interlocked系列函数(Interlock英文为互锁的意思) (1)原子访问的原理 ①原子访问:指的是一线程在访问某个资源的同时,能够保证没有其他线程会在同一时刻访问该资源. ...
- AC日记——计算2的N次方 openjudge 1.6 12
12:计算2的N次方 总时间限制: 1000ms 内存限制: 65536kB 描述 任意给定一个正整数N(N<=100),计算2的n次方的值. 输入 输入一个正整数N. 输出 输出2的N次方 ...
- AC日记——忽略大小写的字符串比较 openjudge 1.7 16
16:忽略大小写的字符串比较 总时间限制: 1000ms 内存限制: 65536kB 描述 一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII ...
- VS的快捷键F12改成和ECLIPSE一样用ctrl+点击下载线
安装resharper 插件即可 不过这个插件是收费的,可免费体验30天