Показать сообщение отдельно
  #1 (permalink)  
Старый 22.07.2015, 17:02
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Два связанных параметра в config-е класса
В продолжение обсуждения конфигурационных свойств, который был начат в ветке Проблема с созданием класса - Значения свойств передаются другому экземпляру появился вопрос.

Как правильно написать методы update* у двух связанных параметров?

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

Например есть класс Арка. Арку можно определить как через радиус арки, так и через высоту арки. Я пишу такой код:

Ext.define("Arc", {
	
	config: {
		
		height: 0,
		
		radius: 0
		
	},
	
	applyHeight: function(height) {
		this._radius = <расчет радиуса на основании высоты>;
		return height;
	},
	
	applyRadius: function(radius) {
		this._height = <расчет высоты на основании радиуса>;
		return radius;
	}
	
});


Тут мне приходится выкручиваться. Если я вызову this.setRadius() вместо присвоения this._radius = , то все зациклится. И чтобы не запустился apply* связанного параметра, приходится присваивать this._radius =.

Это какой-то недокументированный способ. Я просто подсмотрел, где хранятся конфиги. Оказалось что в переменных с префиксом подчеркивание.

А как правильно это сделать?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием