Показать сообщение отдельно
  #2 (permalink)  
Старый 18.08.2011, 22:36
Новичок на форуме
Отправить личное сообщение для Lord Daedra Посмотреть профиль Найти все сообщения от Lord Daedra
 
Регистрация: 18.08.2011
Сообщений: 2

Вообщем, чтобы было понятнее:

модель
Ext.define('GksksAisk.model.Client', {
    extend: 'Ext.data.Model',
    idProperty: 'clientId',
    fields: [
        { name: 'clientId',                 mapping: 'client_id',                   type: 'int',        disabled: false,         submitValue: false },
        { name: 'clientName',               mapping: 'client_name',                 type: 'string' },
        { name: 'clientChairman',           mapping: 'client_chairman',             type: 'string' },
        { name: 'clientChiefAccountant',    mapping: 'client_chief_accountant',     type: 'string' },
        { name: 'clientContractNumber',     mapping: 'client_contract_number',      type: 'string' },
        { name: 'clientContractIndex',      mapping: 'client_contract_index',       type: 'string' },
        { name: 'clientContractDate',       mapping: 'client_contract_date',        type: 'date',       dateFormat: 'd.m.Y'},
        { name: 'clientContact',            mapping: 'client_contact',              type: 'string' },
        { name: 'clientCommission',         mapping: 'client_commission',           type: 'float' },
        { name: 'clientDebt',               mapping: 'client_debt',                 type: 'float' },
        { name: 'clientComments',           mapping: 'client_comments',             type: 'string' },
        { name: 'clientManager',            mapping: 'client_manager',              type: 'string' },
        {
            name: 'text',
            convert: function(value, record) {
                return record.get('clientName');
            }
        },
        { name: 'leaf',                                                             type: 'bool',       defaultValue: true }
    ],

    validations: [
        { type: 'presence',  field: 'clientName' },
        { type: 'presence',  field: 'clientChairman' },
        { type: 'presence',  field: 'clientChiefAccountant' },
        { type: 'presence',  field: 'clientContractNumber' },
        { type: 'presence',  field: 'clientContractIndex' },
        { type: 'presence',  field: 'clientContractDate' },
        { type: 'presence',  field: 'clientContact' },
        { type: 'presence',  field: 'clientCommission' },
        { type: 'presence',  field: 'clientDebt' }
    ],

    proxy: {
        type: 'rest',
        url: '/api/clients',
        api: {
            read: '/api/clients',
            create  : '/api/clients',
            update  : '/api/clients',
            destroy : '/api/clients'
        },
        reader: {
            type: 'json',
            root: 'children',
            successProperty: 'success'
        },
        writer: {
            type: 'json',
            writeAllFields: false
        }
    }
});


хранилища:
Ext.define('GksksAisk.store.Clients', {
    extend: 'Ext.data.Store',
    model: 'GksksAisk.model.Client',

    autoLoad: true,
    autoSync: true,

    sorters: ['clientName']

});

и

Ext.define('GksksAisk.store.ClientsList', {
    extend: 'Ext.data.TreeStore',
    model: 'GksksAisk.model.Client',

    proxy: {
        type: 'ajax',
        url: '/api/clientslist',
        api: {
            read: '/api/clientslist'
        },
        reader: {
            type: 'json',
            root: 'children',
            successProperty: 'success'
        }
    },

    autoLoad: true,
    autoSync: true,

    sorters: ['text']
});


контроллер:
Ext.define('GksksAisk.controller.Clients', {
    extend: 'Ext.app.Controller',

    stores: [
        'Clients',
        'ClientsList'
    ],

    models: [
        'Client'
    ],

    views: [
        'client.Complex',
        'client.List',
        'client.Show',
        'client.Add',
        'client.Edit'
    ],
    
    init: function() {
        var me = this;

        me.control({
            'clientadd button[action=create]': {
       		    click: me.onCreateClientClick
           	},
...
        });

        Client = me.getClientModel();
        ClientsList = me.getClientsListStore();
    },


    onCreateClientClick: function(view, records) {
        var me = this;
        var win = Ext.getCmp("clientadd"),
            form = win.down('form'),
            formpanel = form.getForm();
            formpanelvalues = formpanel.getValues();
        if (!formpanel.isValid()) {
            Ext.Msg.alert('Ошибка при заполнении формы', 'Пожалуйста, исправьте ошибку и отправьте форму снова.')
        } else {
            form.setLoading({
                msg: 'Пожалуйста, подождите...'
            });

            var newclient = Ext.create('Client', formpanelvalues);
            newclient.save({
                success: function(newclient) {
                    form.setLoading(false);
                    console.log("Saved Client! His ID is " + newclient.getId());
                    ClientsList.sync();
                    console.log(ClientsList); // тут нет моего добавленного клиента!
                    win.close();
                },
                failure: function(newclient) {
                    form.setLoading(false);
                    Ext.Msg.alert('Failed');
                }
            });


        }
    },
...

});


То есть я прошу подсказать, правильно ли я решаю задачу добавления нового клиента? И если всё верно, почему не обновляется ClientsList? (я не вижу в списке клиентов вновь добавленного после закрытия окна формы)
Ответить с цитированием