Добрый день!
Недавно начал изучать 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 работает
});