extjs Tree中避免连续单击会连续请求服务器

应用场景:在项目中我要做一个左边是tree,右边是panel的界面。当我单击tree中的一条记录时,发送请求,并将结果显示在右边的panel中。做完之后发现,如果连续单击就会连续请求两次服务器,毕竟用户不知道是应该单击tree中的记录还是双击。

解决思路:利用一个boolean类型的flag来判断,并使用了 Ext.util.DelayedTask延时的技术。我先将flag设为true,点击一次之后马上设置为false,并在一秒延迟后将其重新设置为true。并且只有当flag为true时,单击才会请求服务器。

flag:true,listeners:{
             scope:this,
               cellclick:function(view, td,cellIndex,record, tr, rowIndex, e, eOpts ){
                     if(this.flag||this.flag==undefined){         //为什么这里要加一个this.flag==undefined,因为第一次点击时flag没有被初始化为true,而是为undefined,具体原因我不知道
                        //这里写发送请求的代码
                         this.flag=false;
                     }
                          var task = new Ext.util.DelayedTask(function(){
                          this.flag=true;
                    });
                       task.delay(1000);    //避免重复点击

              }
            },

这样就解决了。1秒以内点击几次都只会发送一次请求。

时间: 2024-11-05 17:31:20

extjs Tree中避免连续单击会连续请求服务器的相关文章

ajax在jQuery中的应用 (2)请求服务器数据

算法题:找出一个数组中相加值最大的连续序列元素

package arithmetic; /** * @author SHI * 求一个数组中相加值最大的连续序列元素 */ public class MaxSequence { public static void main(String[] args) { int[] a=new int[]{-2,9,-3,4,-6,7,-6,4}; findBigSequence(a); } /** * 思想: (1)计算出该数组的所有元素和,假设该值为最大 * (2)从数组下标1到a.length-1依次

extjs desktop中桌面图标换行

在Desktop.js中扩展一个函数 initShortCut : function() { var btnHeight = 64; var btnWidth = 64; var btnPadding = 30; var col = { index : 1, x : btnPadding }; var row = { index : 1, y : btnPadding }; var bottom; var numberOfItems = 0; var taskBarHeight = Ext.qu

[LeetCode系列]卡特兰数(Catalan Number) 在求解独特二叉搜寻树(Unique Binary Search Tree)中的应用分析

本文原题: LeetCode. 给定 n, 求解独特二叉搜寻树 (binary search trees) 的个数. 什么是二叉搜寻树? 二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值: 它的左.右子树也分别为二叉排序树. 举个栗子,给定 n = 3, 共有 5 个. 1 3 3 2 1 \ / / / \ 3 2 1 1

extjs tree check 级联选择

extjs4 tree check 级联选择 实现效果: 关键代码: function changeAllNode(node, isCheck) { allChild(node, isCheck); allParent(node, isCheck); function allChild(nodec, isCheckc) { var chileNodes = nodec.childNodes; Ext.Array.each(chileNodes, function (nd) { if (nd.ha

(DT系列四)驱动加载中, 如何取得device tree中的属性

本文以At91rm9200平台为例,从源码实现的角度来分析驱动加载时,Device tree的属性是如何取得的.一:系统级初始化DT_MACHINE_START 主要是定义"struct machine_desc"的类型,放在 section(".arch.info.init"),是初始化数据,Kernel 起来之后将被丢弃.#define DT_MACHINE_START(_name, _namestr) \static const struct machine_

[Flex] 组件Tree系列 —— 阻止用户点击选中Tree中任何节点

mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:阻止用户点击选中Tree中任何节点--> 3 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 4 xmlns:s="library://ns.adobe.com/flex/spark" 5 xmlns:mx="

【转】(DT系列四)驱动加载中, 如何取得device tree中的属性

原文网址:http://www.cnblogs.com/biglucky/p/4057488.html 本文以At91rm9200平台为例,从源码实现的角度来分析驱动加载时,Device tree的属性是如何取得的.一:系统级初始化DT_MACHINE_START 主要是定义"struct machine_desc"的类型,放在 section(".arch.info.init"),是初始化数据,Kernel 起来之后将被丢弃.#define DT_MACHINE_

[Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点

mxml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--功能描述:阻止用户点击选中Tree中分支节点--> 3 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 4 xmlns:s="library://ns.adobe.com/flex/spark" 5 xmlns:mx="