2

我正在使用 extJS 4.0 版来生成输入表单。在该表单上有一个保存按钮,可通过 ajax 将所有字段数据发送到 php。作为数据本身的传输协议,我使用的是 json。

因为我需要为处理这些数据创建一个动态(通用)例程(因为该表单不是该项目中的唯一表单),所以我需要以某种方式分组该 json 数据。我的要求之一是我需要“字段名”保持原样(因为我使用传输给我的字段名在自动保存例程中访问数据库中的适当列)。

我的问题是有没有办法以某种方式对通过 json 传输的数据进行分组(因此 extJS 将其分组)。作为一个简化的例子:

在 entryform 上,我保存了 2 个表(1. Person 2. bankaccount)的数据,这些表在表单上显示了以下字段: -firstname -lastname for person 和 -account number -bank number for bankaccount(相应的商店)

extJS 有没有办法相应地对这些数据进行分组,从而生成这样的东西?

{"person":[{"firstname": "Mark", "lastname":"Smith"}],"bankaccount":[{"account number":123112,"bank number":1A22A1}]}

目前我得到这样的东西:

{"firstname": "Mark", "lastname":"Smith","account number":123112,"bank number":1A22A1}

个人和银行帐户都在各自的商店中。

肿瘤坏死因子。

4

1 回答 1

2

好吧,您有两家商店:一家用于“person”,一家用于“bankaccount”。

Ext.define ('Person', {
    extend: 'Ext.data.Model' ,
    fields: ['firstname', 'lastname']
});

Ext.define ('BankAccount', {
    extend: 'Ext.data.Model' ,
    fields: ['accountnumber', 'banknumber']
});

var personStore = Ext.create ('Ext.data.Store', {
    model: 'Person' ,
    data: [
        {firstname: 'foo', lastname: 'bar'} ,
        {firstname: 'zoo', lastname: 'zar'} ,
        {firstname: 'too', lastname: 'tar'} ,
        {firstname: 'goo', lastname: 'gar'} ,
        {firstname: 'moo', lastname: 'mar'}
    ]
});

var bankAccountStore = Ext.create ('Ext.data.Store', {
    model: 'BankAccount' ,
    data: [
        {accountnumber: 10000, banknumber: 10000} ,
        {accountnumber: 20000, banknumber: 20000} ,
        {accountnumber: 30000, banknumber: 30000} ,
        {accountnumber: 40000, banknumber: 40000} ,
        {accountnumber: 50000, banknumber: 50000}
    ]
});

然后,您想将这些存储转储为 JSON。没问题!制作一个容器(jsonData),然后用您的商店填充它:

var jsonData = {
    person: [] ,
    bankaccount: []
};

personStore.each (function (person) {
    jsonData.person.push (person.data);
});

bankAccountStore.each (function (bank) {
    jsonData.bankaccount.push (bank.data);
});

console.log (Ext.JSON.encode (jsonData));

这是控制台上的输出:

{"person":[{"firstname":"foo","lastname":"bar"},{"firstname":"zoo","lastname":"zar"},{"firstname":"too","lastname":"tar"},{"firstname":"goo","lastname":"gar"},{"firstname":"moo","lastname":"mar"}],"bankaccount":[{"accountnumber":10000,"banknumber":10000},{"accountnumber":20000,"banknumber":20000},{"accountnumber":30000,"banknumber":30000},{"accountnumber":40000,"banknumber":40000},{"accountnumber":50000,"banknumber":50000}]}

这是你要求的吗?

这是小提琴

于 2012-09-20T13:43:59.127 回答