Ext.util.Observable(观察者)
观察者( Observable ,或订阅者 subscribe r )模式 常 用于对象间的解藕,方便清楚了解其它对象的状态。观察者使用事件的概念,当主题的状态有所改变,那么主题就会是触发事件。换言之,状态一改变,主题辖下的 订阅者就会接收到通知。为达到如此的灵活性,实现解藕编程模型,很多Ext类就从Observable继承。创建一个自定义事件的类定很简单:
var MyClass = Ext.extend(Ext.util.Observable, {
constructor: function(config){
this.addEvents('datachanged'); // 声明打算触发的事件
MyClass.constructor.call(this, config);
},
update: function(){
// 执行数据更新
// 对订阅者送入我们指定的参数
this.fireEvent('datachanged', this, this.data.length);
}
});
// 进行事件的订阅
var c = new MyClass();
c.on('datachanged', function(obj, num){
// 数据变化事件的反应
});
观察者( Observable ,或订阅者 subscribe r )模式 常 用于对象间的解藕,方便清楚了解其它对象的状态。观察者使用事件的概念,当主题的状态有所改变,那么主题就会是触发事件。换言之,状态一改变,主题辖下的 订阅者就会接收到通知。为达到如此的灵活性,实现解藕编程模型,很多Ext类就从Observable继承。创建一个自定义事件的类定很简单:
var MyClass = Ext.extend(Ext.util.Observable, {
constructor: function(config){
this.addEvents('datachanged'); // 声明打算触发的事件
MyClass.constructor.call(this, config);
},
update: function(){
// 执行数据更新
// 对订阅者送入我们指定的参数
this.fireEvent('datachanged', this, this.data.length);
}
});
// 进行事件的订阅
var c = new MyClass();
c.on('datachanged', function(obj, num){
// 数据变化事件的反应
});