- 使用eventedConfig的类需继承’Ext.Evented’
- eventedConfig自动并入到config中
代码语言:javascript
复制// Evented.js源码
Ext.define('Ext.Evented', {
onClassExtended: function(cls, data) {
if (config) {
Ext.applyIf(config, eventedConfig);
}
else {
cls.addConfig(eventedConfig);
}
}
});
- 通过set方法修改值的时候会触发before[configName]change和[configName]change事件
- 在before[configName]change事件函数中返回false可以阻止setter执行
代码语言:javascript
复制Ext.define('MyApp.util.Test', {
extend: 'Ext.Evented',
eventedConfig: {
foo: null
}
});
var test = Ext.create('MyApp.util.Test', {
listeners: {
beforefoochange: function (instance, newValue, oldValue) {
return newValue !== 'bar';
},
foochange: function (instance, newValue, oldValue) {
console.log('foo changed to:', newValue);
}
}
});
test.setFoo('bar');