看ExtJs API文档的阅读方法
对EXT,下载一个ext2.0的API文件,叫你如何看懂API,看完保证就会用API,但是你必须看完。
Config Options
Public Properties
Public Methods
Public Events
基本上都由以上4部分组成
Config Options下的内容为你在实例化一个对象时进行配置,也就是比如new Panel({a:"xxx",b:"yyy"}),这里的a和b就是来自于Config Options
就拿tree下的TreeNode来说:
Config Options下的checked
checked : Boolean
True to render a checked checkbox for this node, false to render an unchecked checkbox (defaults to undefined with no...
True to render a checked checkbox for this node, false to render an unchecked checkbox (defaults to undefined with no checkbox rendered)
TreeNode是树节点的意思,那么肯定也就是一个节点
而checked很明显我们就能猜出来是 是否选中 的意思
这个checked是在Confgi Options下的,是实例化的时候用的,注意这点,其他时候能否用你是不知道的
而且这个配置选项的值必须只接受boolean类型的,也就是true或false
比如 var root = new Ext.tree.TreeNode({checked:true});
比如href : String 表示的配置选项href接受的类型是string的
这个所谓的配置选项,也就是Config Options下的内容,只有你在实例化的时候用的,也就是你在new 类名({...})时用的
然后你再看 Public Properties 部分
看这个childNodes ,public properties下的
childNodes : Array 这样写
表示的是你从一个实例化对象里取得的属性,比如你刚才 var tn = new Ext.tree.treeNode({....});这样已经实例化了一个对象了,那么现在你可以取实例化对象的数据了,怎么取呢,可以取里面的什么东西呢,那么这里public properties里的列出的就是你能取的,那么你要tn.childNodes就能获得一个Array类型的数据,所以public properties下列出的就是一个实例化对象能取的信息,冒号后面的是你索取得的信息的返回类型.
Public Methods 再来看这个部分
一般第一个都会是你实例化一个对象的构造方法
TreeNode( Object/String attributes )
表示的是这个构造方法可以接受两种类型的参数,一个是object类型的,一个是string类型的
所谓的object类型的一般是这种模式{...},而所谓的string类型就是"..."
再看appendChild( Node/Array node ) : Node 这个
表示的是能接受的参数是Node类型或者Array类型的数据,注意看括号里面的括号里面的才是调用这个方法时需要传递进去的参数类型. 而冒号后面的那个Node的意思是你调用这个方法后返回的一个数据类型.
比如var n = tn.appendChild(new Ext.tree.TreeNode({....}));那么是能够得到这个n的值的,并且这个n的值肯定就是Node类型的.
接下来看Public Events部分:
这部分的内容表示的是你在使用TreeNode类的时候可能出现的事件
比如你对一个树节点进行添加子节点的操作,那么append事件就会发生,也就是在你var n = tn.appendChild(new Ext.tree.TreeNode({....}));运行这个代码的时候会发生append事件
append : ( Tree tree, Node this, Node node, Number index )
冒号后面的表示的是发生这个事件时会传递过来的数据.要记住和理解这点,那么事件是这样发生的,但是你如何捕获事件呢?就是通过两种方式:一种是on,一种是listeners,你可以在实例化一个类的时候为listeners配置选项赋值,
比如var tn = new Ext.tree.TreeNode({listeners:{"append":function(a,b,c,d){....}}})
还有一种是你对这个实例进行on或addListener方法的调用,Public Methods下面的on或addListener这个不是无缘无故出来的
on( String eventName, Function handler, [Object scope], [Object options] ) : void 要知道这个事件捕获接受哪些参数,另外:js跟java是不一样的java的方法你传递的参数个数必须根定义的一样,但是js的并不需要 ,所以你在进行on方法的调用是可以传递不等同个数的参数,那么这里
on( String eventName, Function handler, [Object scope], [Object options] ) : void可以只传递2个参数,
一般情况下,这个api告诉你的是,[]这样括起来的表示你可以不传递的参数,
其他的最好传递进来
所以你可以这样调用了. tn.on("append",function(){...})
或者
tn.on("append",hello);
function hello(a,b,c,d){...}
[Object scope], [Object options]这个是作用域一般就是传递this什么的,有时候会用到,特别是当你遇到一些问题时
这个on或addListener方法的调用跟public events下的事件是挂钩的
事件append : ( Tree tree, Node this, Node node, Number index ) 冒号后面表示的是事件发生时自动得到的信息
所以,当在调用on方法时,on方法里handler参数就很关键了.
Function handler 这里定义的方法将被调用,别且会将
事件append : ( Tree tree, Node this, Node node, Number index ) 冒号后面表示的是事件发生时自动得到的信息
的参数传递给它
所以你在定义这个handler的时候就可以定义成接受( Tree tree, Node this, Node node, Number index ) 这4个类型的参数
tree.on("click",function(node,event) 这里的function(node,event)可以单独拿出来
event 就是事件,事件并不是作用在方法上,而是作用在对象上,只是,比如你想右键一个树节点后去调用某个方法在调用某些方法的时候触发了事件的发生:那么,你就可以tn.on("contextmenu",function(node,e){...})
Public Events下面的东西只是定义了一些事件,而真正使用事件是你进行捕获,就是用on:另外on是addListener的简写,两个方法是一样的.
看API各个配置选项或属性或方法或事件的右边,有个叫Defined By,列头 - Defined By,
他表示的是这些信息是由哪个类定义的,因为你要知道ext中一个很重要的信息就是继承,
所以有些方法或配置选项或属性都是来自于他的父类或超类,
那么这个Defined By 就告诉了你是来自具体的哪个父类或超类
这样在你看源码的时候就非常清晰
然后Defined By 如果字体是黑色的表示这个配置选项或属性或方法或事件是他本身这个类定义的
所以你一般去看一个类的特性的时候,你只需要去关注这个黑色文本的那些配置选项或属性或方法或事件
然后我们再看看最上面的部分
Class Ext.tree.TreeNodePackage: Ext.tree
Defined In: TreeNode.js
Class: TreeNode
Subclasses: AsyncTreeNode
Extends: Node
这里有Subclasses和Extends
Subclasses表示这个类有哪些子类,Extends表示这个类继承自哪个类
所以要说这点,是因为要说事件应用的限制
只有那些继承了Observable类的类,也就是这个类是Observable的子类或子孙类,那么这个类才拥有事件处理机制,也就是才会有Public Events部分
所以,如果自己扩展一个类,想拥有事件处理和响应机制,那么这个类就必须是这个Observable类的子类或子孙类
可以一直点Extends后面的进去,最后肯定会出来我说的这个Observable类