Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   mootools: Проблема с работой объекта в другом классе (https://javascript.ru/forum/library-toolkit-framework/16273-mootools-problema-s-rabotojj-obekta-v-drugom-klasse.html)

mrfanat 01.04.2011 10:08

mootools: Проблема с работой объекта в другом классе
 
Добрый день!
Недавно начал изучать mootools, столкнулся с такой проблемой: непонятно передаётся свойство enabled в методе clicked. В нижеприведённом коде в комментариях указано, где оно работает корректно, и где не работает. Прошу прощения за большой объем кода, резал как мог, оставляя только самое важное. Подскажите, в чём ошибка. Заранее спасибо!
Button = new Class({
		Implements: [Options,Events],
			options: {
			enabled: true
			},
		initialize: function(options) {
			this.setOptions(options);
			this.button = new Element('a', {
		      	href: '',
		      	text: 'Тест', 
		            events: {
		                click: this.clicked.bindWithEvent(this)
				}
			});
			this.setEnabled(this.options.enabled);
		},
		clicked: function(evt) {
			alert(this.options.enabled);
			if (this.options.enabled) {
		      	this.fireEvent('click', {obj: this, event: evt});
		      }
		},
		setEnabled: function(enabled) {
		    	this.options.enabled = enabled;
		    	if (this.options.enabled) {
		           this.button.setStyle('color', '#000');
		        } else {
		        	this.button.setStyle('color', '#fff');
		        }
		}
		});
		Toolbar = new Class({
			Implements: [Options],
			options: {
				id: ''
			},
			initialize: function(options) {
				this.setOptions(options);
				this.items = [];
				this.n = 0;
				this.toolbar = $(this.options.id);
			},
			add: function(items) {
				items.each(function(item, index) {
					this.n++;
					this.items[this.n] = item;
					this.toolbar.adopt(item.button);
				}.bind(this));
				//this.items[1].setEnabled(true); //Button.clicked работает
			}
		});
		Grid = new Class({
			Implements: [Options],
			options: {
				button: ''
			},
			initialize: function(id, options) {
				this.setOptions(options);
				this.options.button.setEnabled(true); //Button.clicked не работает
			}
		});

		window.addEvent('domready', function() {

		var toolbar = new Toolbar({id: 'toolbar'});
		toolbar.add([
			new Button({enabled: false,
					onClick: function(){alert('Работает');}})
		]);
		var grid = new Grid('grid', {button: toolbar.items[1]});
		//toolbar.items[1].setEnabled(true); //Button.clicked работает
		});


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