kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks

 1.  在拿一个提交页面的例子学习,发现老是new Ext.form.Form被提示不是一个容器的错误。查了些资料,原来在开发者log中被删除,在版本2.0后不再支持该类。(http://extjs.com/forum/showthread.php?t=12866
   其中,该类中的部分函数也被移除掉,如添加输入控件的fieldset。在看教程中一定要看清楚该版本是属于啥版本,否则搞错了就要费工夫翻源码,找问题了。
src/widgets/form/
Field
- Removed applyTo function (use base render function instead)
Form
- Converted Ext.form.Form to Ext.form.FormPanel (extends Panel instead of BasicForm)
- Removed functions column, fieldset, container, start and end
Layout
- Replaced Ext.form.Layout with Ext.layout.FormLayout
- Changed Fieldset to extend FormLayout instead of form.Layout

其中更为详细的1.0到2.0的修改移植见:http://hzjavaeyer.group.javaeye.com/group/blog/134693

2.有关ext的架构模型(来自i_love_sc,不过好像讲解的是1.0版本的,)

      EXT中所有和数据相关的类都放在Ext.data命名空间下。

    * Store:        最主要的对外交互接口,内部保存了一个数据集。
      JsonStore
      JsonReader    把代理读取的数据读入数据集。
  
    * Record:       数据集里面的每一条记录。
    * DataField:    定义了记录每个字段的schema。
    * DataProxy:    获取数据的代理。
      ScriptTagProxy
      HttpProxy,
    * DataReader:   把代理读取的数据读入数据集。

 Store的实现
     内部用一个Ext.util.MixedCollection(既能够作为map进行索引,又能够作为list进行索引,并且更新数据时会触发事件,并且有一些其它功能的数据结构)作为数据集存放record。store实例的data域指向这个数据集。
   通过proxy加载不同来源的数据,如http remote,memory data等等。
   由于proxy加载过来的数据是异构的,所以通过不同DataReader的实现类来读入数据成为record。

    当调用load方法时候,就会委托proxy去加载数据。
    在data数据集中数据的数据,添加,修改,删除的时候触发事件。


Store数据加载流程简介

  1. 实例化一个Proxy的实现proxy。
  2. 实例化一个DataReader的实现reader。
  3. 实例化一个Store对象store。设置store的proxy与reader。
  4. 监听store的load事件或者datachange事件。
  5. 调用store.load()
  6. store.load会调用proxy的load方法来加载数据(各种DataSource)。并且把reader作为参数传入。
  7. proxy的load方法加载完数据之后,调用传入的reader的read方法,并且把数据作为参数传入。
  8. reader的read方法把异构数据读入成record数据集。
  9. proxy把reader.read方法生成的record数据集作为参数,回调store。
  10. store把数据集添加到或者替换原来的数据集。
  11. 触发load事件,触发datachange事件。

 

posted on 2008-04-10 15:06 kenlistian 阅读(1034) 评论(0)  编辑 收藏 引用 所属分类: WEB