перекрасить компоненты в extJS - PullRequest
0 голосов
/ 24 января 2012

Мне нужно сделать следующее: есть несколько кнопок.Нажатие любой из кнопок изменяет формальное состояние, поэтому некоторые кнопки становятся невидимыми.Я написал следующий код

Loyalty.company.CompanyEditForm = Ext.extend(Loyalty.tools.AdvancedForm,
    {
        defaultConfig:{
            ......
            currentState: 'READONLY'
            // EDIT, CREATE, CREATE_EDIT
        },


        constructor:function (config) {
            Ext.apply(config, this.defaultConfig);
            config['owner'] = this;
            config['items'] = [];
            config['items'] = this.createItems(config);
            config['buttons'] = this.createButtons(config);
            Loyalty.company.CompanyEditForm.superclass.constructor.call(this, config);
            this.loadCompany(config['jsonCompany']);
            this.renderingView(config);// here it's ok
        },

....

        renderingView:function (config){
           if (config.currentState == 'READONLY'){
               this.items.items[0].disabled = false;
               Ext.ComponentQuery.query('#cardNumber')[0].disabled = true;
               Ext.ComponentQuery.query('#btnEdit')[0].hidden = false;
               Ext.ComponentQuery.query('#btnRewrite')[0].hidden  = true;
               Ext.ComponentQuery.query('#btnSubmit')[0].hidden  = true;
               Ext.ComponentQuery.query('#btnCancel')[0].hidden  = false;
           } else if (config.currentState == 'EDIT'){
               this.items.items[0].disabled = false;
               Ext.ComponentQuery.query('#cardNumber')[0].disabled = false;
               Ext.ComponentQuery.query('#btnEdit')[0].hidden = true;
               Ext.ComponentQuery.query('#btnRewrite')[0].hidden  = true;
               Ext.ComponentQuery.query('#btnSubmit')[0].hidden  = false;
               Ext.ComponentQuery.query('#btnCancel')[0].hidden  = false;
           } else if (config.currentState == 'CREATE'){
               Ext.ComponentQuery.query('#cardNumber')[0].disabled = false;
               Ext.ComponentQuery.query('#btnEdit')[0].hidden = true;
               Ext.ComponentQuery.query('#btnRewrite')[0].hidden  = false;
               Ext.ComponentQuery.query('#btnSubmit')[0].hidden  = false;
               Ext.ComponentQuery.query('#btnCancel')[0].hidden  = false;
           }
            this.owner.doComponentLayout()
           return null;
        },



        createButtons:function (config, form) {
            return [
                {
                    id: 'btnEdit',
                    text:Loyalty.messages['company.edit.fields.edit'],
                    handler:function () {
                        config.currentState =  'EDIT';
                        config.owner.renderingView(config)
                    }
                }  ,
                {
                    xtype:'button',
                    id: 'btnRewrite',
                    text:Loyalty.messages['company.edit.fields.rewrite'],
                    handler:function () {
                        config.currentState =  'READONLY';
                        config.owner.renderingView(config)
                    }
                },
                {
                    xtype:'button',
                    id: 'btnSubmit',
                    text:Loyalty.messages['company.edit.fields.submit'],
                    handler:function () {
                        config.currentState =  'CREATE_EDIT';
                        config.owner.renderingView(config)
                    }
                },
                {
                    xtype:'button',
                    id: 'btnCancel',
                    text:Loyalty.messages['company.edit.fields.cancel'],
                    handler:function () {
                        if (config.currentState ==  'EDIT' || config.currentState ==  'CREATE_EDIT'){
                            config.currentState =  'READONLY';
                            config.owner.renderingView(config)
                        }
                    }
                }
            ];
        },

        ....
    }
);

Функция renderView хорошо работает, когда я вызываю ее из конструктора.Но когда он вызывается из методов кнопки, ничего не происходит.состояние кнопок для изменения (скрыто).Я думаю, что проблема с перекраской

Ответы [ 3 ]

1 голос
/ 25 января 2012

Вы должны использовать методы setVisible и setDisabled вместо установки свойств в renderingView.

0 голосов
/ 25 января 2012

причина была очень простой. Как только я начал использовать setVisibled () и setDisabled () вместо отключенных и скрытых, все работало правильно

0 голосов
/ 25 января 2012

Я считаю, что ваш объект конфигурации не определен при запуске обработчика кнопки.Вы получаете трассировку стека ошибок в Chrome?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...