Extjs 点击一次button触发多次请求
来源:互联网 发布:淘宝网址微信转换 编辑:程序博客网 时间:2024/05/16 12:24
今天偶然发现一个问题,ext的按钮点击一次以后进行了多次请求,一开始怀疑button会默认submit一次,再加上我采用的ajax请求,这样就会导致多次请求,后来发现我想错了,而且有个值得关注的现象:打开新页面,第一次打开窗口操作上面的button只会提交一次,成功后窗口会关闭;第二次打开窗口操作上面的button就会提交两次···以此类推。很奇怪···后来受到一篇文章的启发:
http://blog.sina.com.cn/s/blog_74a86d520101l10b.html
事件触发两次的三种原因:
1. 容器的多次初始化
隐蔽级别★★★
错误表现为在代码中将一个容器初始化了两次,例如
此行代码乍一看是正常的获取一个控制器然后初始化,其实getController方法已经将控制器初始化了,这时再调用init()方法就会注册两次,一般犯了一次这样的错误,看了源码以后就不会再犯了,毕竟每个项目里用到的地方不多.
2. 控制器的继承
隐蔽级别★★
错误表现为注册全局事件,在继承的子控制器内又注册事件,这是某论坛友人出现的错误,注意就好了.
3.容器注册控制器,同时在代码里又使用了getController方法而使得控制器的多次注册
隐蔽级别★★★★
这个错误隐蔽级别高的原因是用开发工具构建MVC时会自动默认注册容器,但因为它没有任何手动行为和显著提示,而导致人不太容易想到.
例如
});
Ext.application({
});
而在编写菜单的时候我们经常会使用getController方法,所以被在不同的地方注册多次.
我的代码构造刚好是在一个页面内,点击了某个按钮,触发生成一个application,同时弹出窗口,由application下的一个controller控制窗口上的按钮,我猜想应该是在窗口关闭的时候controller或者application没有销毁,造成第二次打开窗口会再生成一个controller,而提交的时候这两个controller都会监听窗口的按钮操作,导致多次提交,于是尝试了各种方法在关闭窗口的时候销毁application或者controller,终于让我找到一个解决方法:在controller的onlaunch方法里添加窗口关闭监听,close事件触发销毁application。成功搞定!代码如下:
onLaunch : function() {
var me = this;
var win = Ext.widget('orderGoodsEditWin');
win.addListener('close',function(panel, eOpts){
me.application.destroy();
});
···
}
共勉!
- Extjs 点击一次button触发多次请求
- 点击按钮一次,多次请求的问题
- 一次点击事件,触发两次异步请求
- 解决bootstrap-table多次请求只触发一次的问题
- 解决bootstrap-table多次请求只触发一次的问题
- android多次点击button只弹一次toast
- [Sencha Touch/ExtJS] (函数节流)阻止用户快速频繁点击,导致多次触发点击事件
- iOS解决按钮短时间内多次点击只触发一次事件方法(开始写博客)
- jQuery给一个元素绑定事件前,一次点击会多次触发的问题所在
- iOS解决按钮短时间内多次点击只触发一次事件方法
- iOS解决按钮短时间内多次点击只触发一次事件方法
- 代码控制一段时间只触发一次事件(防止多次点击) Android
- 关于开发网站时网页上的按钮点击一次触发多次的原因记录
- iOS解决定时器按钮短时间内多次点击只触发一次事件方法
- android Button防止多次点击
- Android button防多次点击
- Button取消多次点击事件
- 解决button多次重复点击
- 适配器模式的极简概述
- 欢迎使用CSDN-markdown编辑器
- 想做数据科学家/工程师?从零开始系统规划大数据学习之路
- 用shell 脚本写守护进程
- C++Primer第五版中的c++11特性归纳(三)
- Extjs 点击一次button触发多次请求
- 在线程里面使用SetTimer定时器
- EditText判断是否可以编辑
- 价值网络和策略网络的简单融合
- Eclipse常用快捷键
- 0_Linux简介
- Oracle数据库相关知识点复习
- Druid介绍
- Java Collections源码与用法