Sencha Touch已经将MVC思想结构化,从文件的命名规则和包结构上就可以体现出来。

在MVC中,视图与数据的关系往往是多对一的关系,也就是说一份数据有可能在多个视图中呈现,

并且每个视图都有可能对该数据进行修改,这时就需要保持数据的一致性。

store可理解成数据集(Record)的集合,类似于数据库的一张表,和store相关有几个重要的概念:

模型(model):每个store都必须指定model,是数据的存储方式。

数据集:模型化后的一条记录

代理(proxy):一般情况下store中的数据集需要通过代理从local/server取得

下面以实例场景说明一份store如何在多个视图中显示的情况

 以calendar的应用为例,

 此时的store中存储的是一定时间内所有的事件。

一般calendar有4个视图,

list view-以列表的形式呈现一定时间内的所有事件(event),需要将store中所有的数据呈现。

month view-以月为单位呈现事件,需要筛选出指定月每一天的event,

week view-以星期为单位呈现事件,需要筛选出指定周每一天的event,

day view-显示每天的时间。 需要筛选出指定天的event。

如何对一份的数据进行不同条件的筛选?

Ext.data.Store中有这样一个方法,filterBy(fn,[scope]),该方法可以筛选出符合条件的store.

eg:eventStore.filterBy(function(record){

    if(record>1) return record;

},this),

someView.setStore(eventStore);

此时eventStore中剩下的是所有大于1的数据,其实不满足条件的数据并不是被删掉了,

而是隐藏起来了,可以用clearFilter()方法恢复原eventStore,这也就达到了重复利用

原始store进行筛选出满足不同条件的store的目的!

 #同一个时间内(一次filter操作)store种只有一个filter条件是有效的!!