`

写一个Ext控件的理论

    博客分类:
  • Ext
 
阅读更多
经大漠穷秋的点拨

编写一个Ext的控件要注意一下

initList分两大步操作,
首先渲染一个打底的“层”用来作为TreePanel的容器,紧接着就把TreePanel渲染到这个层中去。。

在initList中还需要注意对list和tree的监听,它们分别是onViewOver和onTreeClick两个工具函数。提供onTreeClick这个方法的原因很简单,当树节点被点击的时候,就把选中节点的值设置到文本框中去
。而提供onViewOver的原因稍微复杂一些:由于list是直接渲染到<body>标签的,因此,如果list已经
展开,而容纳ComboTree的容器发生了移动,list就不会跟随容器而移动,于是就会产生比较诡异的
现象。因此,当list失去焦点的时候,最好把它折叠起来。

同时,由于在树节点上点击的时候,作为容器的list会首先失去焦点,从而触发beforeBlur方法被执行
,于是下拉树就会被折叠起来,此时就无法获得哪个节点被点击了。读者可以把beforeBlur内部的函
数调用注释掉,然后查看页面执行的效果:

beforeBlur:function(){
    this.assertValue();
    }
正是由于组件的beforeBlur是在onTreeClick方法之前被执行的,因此,当下拉树展开时,我们需要一
个onViewOver工具函数,当鼠标在树中的节点上移动时,实时记录鼠标位于哪个节点上,这样就可
以在beforeBlur方法中做一点额外的工作了。以上就是为什么需要onViewOver、beforeBlur、
assertValue、postBlur四个工具方法的原因。
纯文字描述比较抽象,读者可对照界面,自行修改相应的代码,然后查看效果。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics