简体   繁体   中英

Save nested form data back to server in ExtJS

I have a Model that contains an association to another Model. I am able to display the nested data into a form by using the mapping attribute on the field. Example:

Ext.define('Example.model.Request', {
    extend: 'Ext.data.Model',

    fields: [
        {
            name: 'id',
            type: Ext.data.Types.NUMBER,
            useNull: false
        }
        {
            name: 'plan_surveyor',
            mapping: 'plan.surveyor',
            type: Ext.data.Types.STRING
        }
    ],

    associations: [
               {type: 'hasOne', associationKey: 'plan', getterName:'getPlan', model: 'Specs.model.Plan'}
              ],

    proxy: {
            type: 'direct',
            api: {
                read: requestController.load,
                 update: requestController.update,
            },
            reader: {
                type: 'json',
                root: 'records'
            },
            writer: {
                type: 'json',
                writeAllFields: true,
                nameProperty: 'mapping'
            }
        }

    });

Using this method, I can display the plan.surveyor value in the form by reference plan_surveyor. I call Form.loadRecord(model) to pull the data from the model into the form.

However, now that I'm trying to send the data back to the server, I get the error:

Error performing action. Please report the following: "Unrecognized field "plan.surveyor"

I am attempting to save to the server by first calling Form.updateRecord(model), then model.save(). Is there a way to have the Writer understand that 'plan.surveyor' is not a property name but instead to properly handle nesting?

Am I doing this the right way to start with, or should I just be handling the setting of the form data and loading back into the model in a more manual fashion? It seems that nested data is not all that well supported in general - any recommendations?

    Ext.define('Example.model.Request', {
        extend: 'Ext.data.Model',

        fields: [
            {
                name: 'id',
                type: Ext.data.Types.NUMBER,
                useNull: false
            }
            {
                name: 'plan_surveyor',
                mapping: 'plan.surveyor',//change to 'plan_surveyor'
                type: Ext.data.Types.STRING
            }
        ],

change that show in comment ,because data index is given in above format because ur give ur format thata time that is not dataindex it's a column or extjs preparatory ,so please change that may it's work well

it's not work u will send hole code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM