Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Функции в контролере (https://javascript.ru/forum/extjs/23497-funkcii-v-kontrolere.html)

Bkmz_1_ 25.11.2011 19:18

Функции в контролере
 
Вложений: 1
Объясните пожалуйста что за фокусы с функциями в контролере?

Вот контролер

Ext.define('MyApp.controller.Wrapper', {
    extend: 'Ext.app.Controller',

	stores: [
        'RegionStore',
        'CityStore'
    ],
	
	views: [
        'Wrapper'
    ],
	
    init: function() {
	    
       this.control({
		    
            '#combo-region': {
                select: this.onRegionSelect
            },
			'#combo-city': {
                select: this.onCitySelect
            }

        });
		
    },
    
    onRegionSelect: function(combo) {
	    //не работает
		Ext.widget('wrapper').down('#combo-city').clearValue();
		//работает
        Ext.widget('wrapper').down('#combo-city').store.clearFilter();
		//работает
        Ext.widget('wrapper').down('#combo-city').store.filter('cid', combo.getValue());
    },
	
	onCitySelect: function() {
	    //не работает
	    Ext.widget('wrapper').down('#button-select-city').enable();
    }
	
});


Архив с проектиком креплю ниже

Bkmz_1_ 26.11.2011 16:45

Вообщем это должо выглядеть так:

Ext.define('MyApp.controller.Wrapper', {
    extend: 'Ext.app.Controller',

	stores: [
        'RegionStore',
        'CityStore'
    ],
	
	views: [
        'Wrapper'
    ],
	
    init: function() {
	    
       this.control({
		    
            '#combo-region': {
                select: this.onRegionSelect
            },
			'#combo-city': {
                select: this.onCitySelect
            }

        });
		
    },
    
    onRegionSelect: function(combo) {
        var cityCombo = combo.up('panel').down('#combo-city');
        cityCombo.clearValue();
        cityCombo.store.clearFilter();
        cityCombo.store.filter('cid', combo.getValue());
    },
	
	onCitySelect: function(combo) {
        var buttonSelectCity = combo.up('panel').down('#button-select-city');
        buttonSelectCity.enable();
    }
	
	
});

Bkmz_1_ 27.11.2011 02:57

Или вот так var cityCombo = Ext.getCmp('wrapper').down('#combo-city');
getCmp() ищет компонет по прописанному в нем id='wrapper', наверное так даже лучше


Часовой пояс GMT +3, время: 11:34.