sencha touch之store

store相当于数据库的表,是模型实例的集合。(是不是可以看成结构体数组)

可以对模型实例进行新建、更新、读取、删除、排序和过滤等操作。

创建store

 

由于store是表,必须要有模型或者定义字段,定义一个store最重要的是定义它的字段或者模型。

 

要让store加载数据,少不了为它定义代理,定义方式和在模型中使用的方式一样。

注意api中read和destroy的地址。

为store加载数据最简单的是添加配置项autoLoad设置其值为true,这样store在创建实例的时候会自动加载数据,

但是如果store数量过多的时候,会导致加载速度很慢,因此使用load的方法来加载数据。

store加载完数据之后会触发load和refresh事件。

如果是为了刷新视图可以使用refresh事件,其他情况可以使用laod事件或refresh事件。

 

store返回格式与模型一样,但是必须要有total,不然就无法分页了

 

加载本地数据

 

如果store在初始化的时候就载入数据,可以使用data配置项来定义,格式与返回格式中的data属性一样。

 

如果想在store初始化后再加载本地数据,就需要使用add或setData方法。

方法add用于追加数据,而setData会删除原有数据然后加载新的数据。

 

因为采用本地加载数据的方式,因此不需要定义代理。

不需要代理,不需要代理,不需要代理

 

这个是吧store中的数据又读到了一个新的comments的store中

var commentsStore= Ext.StoreManager.get("Comments");
commentsStore.setData(data.getAt(0).comments().getData().items);

 

 

在store中实现增删改查

1. 新建操作

要在store中增加数据可以使用add方法,该方法可以一次添加一条或者多条数据。

单个数据的格式必须是json格式的

 

新建完了之后就可以用sync方法将数据提交到服务器端。

服务器端处理完数据之后就可以根据相应的格式返回数据了。

sync方法会返回一个对象,包含added,updated和removed三个属性。

 

调用sync方法之后,这两条新的记录会以数组的形式通过data关键字提交到服务器,

服务器端的处理过程是:将获取的字符串转换为JSON数组,然后逐个提取数组中的JSON对象,并将数据保存到数据库,这时数据库会返回实际的产品编号,

且必须使用ProductId字段返回。每新建一个记录的时候,框架都会为它分配一个id值。

 

2. 编辑操作

编辑操作是基于记录的,而且只能使用记录的set方法来操作,方法set有两个参数,第一个参数是要编辑的字段的名称,第二个是编辑后的字段值。

 

3. 删除操作

在store中,删除操作有remove,removeAll和removeAt三个方法,分别用来删除记录、删除全部记录和根据索引来删除记录。

删除记录不能使用sync方法,没有办法清空删除缓存中的记录。每次同步都会重复发送已删除的记录。

最好在store定义中,定义syncRemoveRecords为false,禁止同步删除的记录。

删除操作使用Ext.Ajax将要删除的记录id提交到服务端进行删除,返回后,再使用模型的destroy方法来删除记录。

不用erase的方法是因为,它会执行一次提交操作。

 

4. 自动同步

在store中可以用配置项autoSync来指示是否同步,默认是false,也就是不自动同步,如果设置为true,则store数据变化时会自动同步。

 

5. store排序,过滤,分组,分页,树状图形

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值