浏览 8961 次
锁定老帖子 主题:ext笔记
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-16   最后修改:2009-10-20
   1.ext事件封装在ext.lib.Event下。上一层还有ext.EventObject,它继续封装了ext.lib.Event。一般函数中function(e),这个e就是ext.EventObject对象。而且ext.EventObject还封装了鼠标和键盘的一些操作。
  
   2.element.on('click',fn,this,{single:true,delay:100,testId}).其中single表示第一次,delay延迟,testId是传入fn()的参数。在fn(e(ext.EventObject),el,args)中,可以通过args.testId得到传入的值。

   3.调用事件还可以object.fireEvent('fn');而Ext.util.Observable.capture(object,function()),可以为对象的事件设置拦截器。
  
   4,之所以封装事件,是因为浏览器的事件只能有一个句柄,若给一个elements定义了两个事件,则会覆盖

   5.layout:'fit'可以让内部pannel随着外部自动填充。否则又出现了什么都不显示。

   5.1 慎用系统提供的autoHeight和autoWidth属性。

   6.grid可以自动排列每列的宽度。viewConfig{forceFit:true}。
 
   7.grid.getSelectionModel().getSelections().会得到选择到的数据,以行为单位,作为数组返回。

   8.用grid左分页是时候注意传的几个参数,注意查看源码,记得sotre.load的顺序。

   9.ext.each(array,fn())可以遍历数组,fn()传入的参数为[当前数组项][当前索引][数组array]。
  
   10.e.preventDefault()去掉浏览器默认的鼠标右键事件。

   11.表单提交后,后台课根据request.getparameter('fieldname')得到相应元素的值。和struts的映射差不多。

   12.form的后台校验,会传回一个json字符串。客户端可以解析,例如{success:false,errors:{text1:'text1 wrong',text2:'text2 wrong'}},其中的text1和text2对应表单中的元素。客户端可以设置success和failure回调函数来处理结果。
  
   13,combox向后台提交的数据是text,可以用hiddenName得到相应的value。

   14.在form表单中,可以用form.getForm().load({url:'servlet|jsp'})来得到相应表单的数据,但是在form中要定义reader:JsonReader。表单数据的填充应该还是name属性来决定,虽然我没试过。

   13.store.load()可以传参。通过下面形式,store.load({params:{id:'value',name:'name'}}).这个id,后台还是可以同过request.getParameters('id')得到。

   14.对话框中有回调函数。Ext.MessageBox.show({config}).

   15.'fit'的layout中items只能放一个子组件,即使放多个,也只会显示第一个。而且aotuHeight属性页不能和fit一起使用。

   16.'border'布局方式中,分为东西南北中五个region,其中center是自动计算大小的。而'south','north'只能设置高度,'west','east'只能设置宽度。

   17,一个页面中只能有一个viewport。
  
   18,'border'排版中,'north'的高度不能用百分比,我觉得很奇怪,每次我百分比就显示不出来。

   19,json数据中{totalProperty:'name',rootName:[]}的一般格式

   20,得到grid选择列数据的小例子
                xtype: 'grid',
                ds: ds,
                cm: colModel,
                sm: new Ext.grid.RowSelectionModel({
                    singleSelect: true,
                    listeners: {
                        rowselect: function(sm, row, rec) {
                            Ext.getCmp("company-form").getForm().loadRecord(rec);
                        }
                    }

   21, ajaxRequest的success和failure表示请求传送失败和成功,不表示后台的处理结果。而form的提交函数中的success何failure和后台的处理结果相关。后台的数据传送方式为response.getWriter.write("{success:true,info:'success info'}")或者是response.getWriter.write("{success:false,error:'failure info'}").

   22,用apply(a,b),将b中的属性复制到a中。并且会覆盖b中原来的属性。若是用applyIf()则不会覆盖。

   23.record中的修改要用record.set('name',newvalue).然后可以选择对修改进行commit或是reject。

   24.使用pagingtoolbar之后,grid的store必须在grid初始化之后load。否则分页工具栏不起作用。分页工具栏的数量总条目来自json的totalProperty属性,分页工具栏不能分页内存中数据,所以第一次只取页面大小的数据。
   发表时间:2009-10-20  
第三条的"时间"应该是"事件"吧~
0 请登录后投票
   发表时间:2009-10-20  
elementstorm 写道
第三条的"时间"应该是"事件"吧~

  恩,是的。呵呵
0 请登录后投票
   发表时间:2009-10-20  
不错,很细节东西,可供没有深入理解使用ext的朋友们指导,
赞楼主一个。
0 请登录后投票
   发表时间:2009-10-20  
第一次看到ext 感觉说的很详细,谢谢楼主的分享
0 请登录后投票
   发表时间:2009-10-23  
"24.使用pagingtoolbar之后,grid的store必须在grid初始化之后load。否则分页工具栏不起作用。"什么是不起作用啊,好像没有问题吧。我都是先load才初始化store的,都用得好好的啊。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics