【问题标题】:Process extjs store proxy data after data recieved收到数据后处理extjs存储代理数据
【发布时间】:2013-01-31 19:22:07
【问题描述】:

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

我希望在将接收到的数据提供给网格之前对其进行编辑。

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

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

我希望了解如何在将 Web 服务返回的数据分配给商店之前对其进行编辑。基本上,从我的 web 服务返回的数据格式与我们提供给 extjs 数据网格的格式不同。所以,在我们给网格之前要做一个数据操作。希望我们能做到。

谢谢

【问题讨论】:

  • 您可以覆盖Ext.data.Proxy,它具有相关的创建、读取、更新、删除方法,因此覆盖读取,您将在将结果放入存储之前获取信息。
  • 我试过这个功能,但现在我看到显示到网格的数据是空的
  • 读取:函数(操作,回调,范围){ var thisProxy = this; var cityInfo = [ {name: 'New Jersey', location: 'East Coast'}, {name: 'California', location: 'West Coast'} ]; operation.resultSet = new Ext.data.ResultSet({ records: cityInfo, total : cityInfo.length }); if (typeof callback == "function") { callback.call(scope || thisProxy, operation); } }
  • 我做错什么了吗?

标签: javascript extjs


【解决方案1】:

模型映射可以帮助您做到这一点。也可以提供一个转换功能。这是来自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'}
    ]
});

【讨论】:

  • 谢谢..这可以用来将一个 JSON 完全转换为另一个 JSON 吗?理想情况下,我希望将传入的 web 服务数据转换为新的 json 数据。我们可以通过这种方法做到这一点吗?
  • 理想情况下,您应该在服务器端执行此操作。
  • ya..so,webservice 是一个通用的 webservice,它也被提供给外部 public..因为我们在它之上构建了一个层,所以我们从 javascript 端做它..跨度>
  • 如果你真的想这样做,你可以重新组织通过 Ajax.request 读取的数据,然后使用 store.loadRawData 读取重新组织的数据。
  • 我明白了..这是直接使用 ajax 请求调用 web 服务然后加载数据...是的..这就是我们现在正在做的...我被问到是否我们可以在 store 中使用代理方法来执行请求。在那种情况下,我必须处理代理请求吗?我们如何通过代理处理需求?
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 2019-03-29
  • 2013-02-22
  • 2023-03-23
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
相关资源
最近更新 更多