2013-01-31 37 views
2

我正在使用extjs sencha存储来存储数据。我向Web服务进行代理调用以获取数据。我使用store.load()函数刷新数据。进程extjs在接收数据后存储代理数据

我正在寻找编辑它被给予网格之前收到的数据。

我知道加载事件,但是这个函数在加载完成并且数据填充了当前数据之后执行。

listeners : { 
     'load' : function(store,records, options) { 
    } 
}, 

我期待看到如何在Web应用程序分配给商店之前编辑从Web服务返回的数据。基本上从我的webservice返回的数据格式与我们给extjs datagrid的格式不同。所以,我们在给电网之前要做一个数据操作。希望我们能做到这一点。

Thx

+0

可以覆盖其有相关的创建,读取,更新Ext.data.Proxy,删除方法,以便覆盖读,你会得到的面前,你会得到的信息结果放入您的商店。 – darren102

+0

我试过这个功能,但是现在我看到显示给网格的数据是空的 – user1402539

+0

read:function(operation,callback,scope){var thisProxy = this; var cityInfo = [ \t {name:'New Jersey',location:'East Coast'}, \t {name:'California',location:'West Coast'}]; operation.resultSet = new Ext.data.ResultSet({records:cityInfo, total:cityInfo.length }); (typeof callback ==“function”){ callback.call(scope || thisProxy,operation); } \t} – user1402539

回答

3

模型映射可以帮助您做到这一点。还有一个转换功能可以提供。下面是从docs的例子:

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { 
      name: 'firstName', 
      convert: function(value, record) { 
       var fullName = record.get('name'), 
        splits = fullName.split(" "), 
        firstName = splits[0]; 

       return firstName; 
      } 
     }, 
     'name', 'email', 
     {name: 'age', type: 'int'}, 
     {name: 'gender', type: 'string', defaultValue: 'Unknown'} 
    ] 
}); 
+0

Thanks..Can这可以用来将一个JSON完全转换为另一个?理想情况下,我期待将传入的webservice数据转换为新的json数据。我们可以通过这种方法做到这一点? – user1402539

+0

理想情况下,您可以在服务器端执行此操作。 – dbrin

+0

ya ..所以,web服务是一个通用的web服务,也被给予外部public.since,因为我们正在建立一个层的顶部,我们从javascript端做.. – user1402539