欢迎来到天天文库
浏览记录
ID:40545411
大小:131.90 KB
页数:5页
时间:2019-08-04
《extjs精通高级编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Extjs扩展组件一、constructor:构造方法:Panel.superclass.constructor.apply(this,arguments);*PS:call,apply方法区别是,从第二个参数起,call方法参数将依次传递给借用的方法作参数,而apply直接将这些参数放到一个数组中再传递,最后借用方法的参数列表是一样的.(callback.call(scope,result,options,true);)说明:constructor是整个组件生成的主要逻辑,组件的生成过程如下:Widget生成过程图二、data封装主要涉
2、及到的有session、sessionProxy、dataObj,整个数据是一棵json树,所以我们要操作的其实只是data的父节点,用父节点操作它的所有的儿子节点,每类儿子节点封装成dataObj,继续操作它的儿子节点,如此往复。儿子节点在父节点的dataObj里面被封装成children(是MixedCollection类型):varchildren=newExt.util.MixedCollection(false,function(o){if(o&&o.code){o=newnet.autodata.data.regions.Co
3、untry(o);returno.code;}});父节点通过MixedCollection提供的方便性实现对子节点的操作:varmc=children.filterBy(function(o){returno.selected===true;});如果dataObj需要绑定事件,必须继承自Observable:var_events=newExt.util.Observable();if(cfg.listeners){_events.on(cfg.listeners);}returnExt.apply(_events,{..})然后用ch
4、ildren代替原来的儿子类型:countries:children.最后将增加的方法apply到父节点的json上.主要的数据都从页面的session变量得到通过:ASC.session.SessionProxy主要实现doRequest()方法.事件触发机制:事件触发,其实等于是调用注册的方法;跟直接调用方法的区别有:1、可以动态增加处理逻辑,不用修改方法原代码。而如果直接调用方法,如果需要继续增加逻辑,则必须修改方法代码。2、易于重用方法代码,一个方法可以交叉注册不同的事件。直接调用则不具备这样的功能,相同逻辑的实现,必须手工拷贝代
5、码。3、插拔式开发。不会影响到以前的逻辑,可以随时插入逻辑方法,也可以随时卸载所插入的逻辑方法。而直接调用根本做不到,稍微不同的逻辑甚至需要写不同的方法。插件机制:在component的constructor方法里面调用,先于render方法,任何继承自component的widget都可以编写plugins,plugin的执行顺序按加入的顺序而定。plugin入口的通过plugin的init方法进入的,其中唯一参数引用是widget自己,所以本质上来说,可以在plugin里面对widget进行任何操作。但是跟直接将代码写在widget里
6、面有诸多好处,主要有:1、自由定制,可以在plugin里面给widget增加需要的方法,主要是一些特殊需求的功能,这样可以定制个性化widget。不需要把所有用到的方法都放到widget里,增加不必要的开销。2、插拔式开发,可以根据具体情况插入多个需要的plugin,也可以根据情况卸载不需要的plugin。针对不同的业务,组合出不同的widget,是一种组装模式。3、提供代码的重用性,同一个plugin可以用于多个widget,一个widget也可以定制多个plugin,真正的实现组件间的组装开发。Widget是一副骨架,plugin是血
7、和肉;widget是一辆车,plugin是其中的零件…PS:但是widget跟plugin是有主次关系的,尽管widget里面的东西全部都可以写在plugin里面,plugin里面的东西也全部可以写在widget里面,但是在开发过程中,应该有一些常识:1、只有个性化的事件才在plugin里面绑定,通的用事件不应写在plugin里面。2、只有个性化的方法才在plugin里面实现,通用的方法不应写在plugin里面。3、Widget里面主要是一些通用的方法和基本的事件,对于特殊需求应该将它放在plugin里面实现。Widget是主,plugi
8、n是次。数据初始化绑定:数据初始化一般都可以通过plugin绑定,在plugin里面通过session获取数据,填充store,然后在widgetrender完之后触发绑定的事件即可。组件与组
此文档下载收益归作者所有