Параметр Config

В Ext JS 4 классы при объявлении членов класса могут использовать секцию config. Ее использование имеет некоторые преимущества по сравнению с обычным объявлением свойств класса, как это было в предыдущих разделах главы. В частности:

Таким образом, следующий класс

Ext.define('Classes.Person', {
	config: {
			name: 'Eugene',
			surname : 'Popov'
	},
    constructor: function(config) {
        this.initConfig(config);
    },
    getinfo: function(){
		alert("Полное имя : " + this.name + " " + this.surname);
    },
  });

будет эквивалентен следующему за счет автоматического создания методов для свойств в секции config:

Ext.define('Classes.Person', {
	name: 'Eugene',
    surname : 'Popov',
	getName: function(){
		return this.Name;
	}
	setName: function(value){
		this.Name=value;
	}
	resetName: function(){
		this.setName('Eugene');
	}
	applyName: function(name){
		return name;
	}
	getSurname: function(){
		return this.Name;
	}
	setSurname: function(value){
		this.Name=value;
	}
	resetSurname: function(){
		this.setName('Eugene');
	}
	applySurname: function(name){
		return name;
	}
    getinfo: function(){
		alert("Полное имя : " + this.name + " " + this.surname);
    },
  });

Конфигурация класса происходит с помощью метода initConfig и передаваемого ему параметра. Этот метод определен у базового класса Ext.Base и поэтому содержится и у всех остальных классов (так как они по сути являются наследниками Ext.Base).

Поэтому мы вполне можем использовать автоматически создаваемые методы:

var eugene = Ext.create('Classes.Person');
eugene.getinfo();
eugene.setName('Bill');
eugene.setSurname('Gates');
eugene.getinfo();

Если мы не хотим, чтобы использовался автоматически создаваемый метод, мы его можем задать явно. Например, мы не хотим, чтобы в качестве имени можно было указать пустую строку. И для этого переопределим метод applyName:

Ext.define('Classes.Person', {
	config: {
			name: 'Eugene',
			surname : 'Popov'
	},
	applyName: function(name){
		// удаляем из имени все пробелы
		name = name.replace(/\s/g, '');
		// если после этого в имени ничего не осталось
		// выбрасываем ошибку
		if(name.length===0){
			alert('Имя не может быть равно нулю');
		}
		else{
			return name;
		}
	},
    constructor: function(config) {
        this.initConfig(config);
    },
    getinfo: function() {
		alert("Полное имя : " + this.name + " " + this.surname);
    },
  });
var eugene = Ext.create('Classes.Person');
eugene.getinfo();
eugene.setName(' '); // в этом месте будет отображаться сообщение с ошибкой
eugene.setSurname('Gates');
eugene.getinfo();
    Поддержать сайт на родительском проекте КГБ