凌动小生的Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

In the process of my project development,I need to change data of model stored in store of  one list,in order to refresh the list without any unnesscary ajax request.But  after you changed the model in store,when your store load data again,the returned data can not bind to the store.It means that your store could not load new data from server,it show the modified data that you set manually.

Follows is the source code:

 1  mergeData: function(rawData) {
 2         var me = this,
 3             fields = me.getFields().items,
 4             ln = fields.length,
 5             data = me.data,
 6             i, field, fieldName, value, convert;
 7 
 8         for (i = 0; i < ln; i++) {
 9             field = fields[i];
10             fieldName = field.getName();
11             convert = field.getConvert();
12             value = rawData[fieldName];
13 
14             if (value !== undefined && !me.isModified(fieldName)) {//if field is modified,Sencha will do nothing and mantains the dirty data that you                                            //changed manually
15                 if (convert) {
16                     value = convert.call(field, value, me);
17                 }
18 
19                 data[fieldName] = value;
20             }
21         }
22 
23         return this;
24     },
    isModified : function(fieldName) {
        return this.modified.hasOwnProperty(fieldName);
    }

Sencha use this method to judge fields if not modified. And now we want the changed fields be bind data from server,so we just set model.modified={} after you change your data.It works well;

 

posted on 2013-03-22 10:55  凌动小生  阅读(340)  评论(0编辑  收藏  举报