是否可以设置在用户定义的配置属性更改时触发的事件侦听器?实施例
Ext.define('myClass', {
singleton: true,
config: {
myProperty: null
}
}
我想设置一个监听器,以便在我调用myClass.setMyProperty('blah');
时触发它。可能的?
答案 0 :(得分:1)
生成的setter不会触发任何事件。
但是,您可以定义自己的setter并从中激活自定义事件。如果你想从中激活事件,你的班级必须使用Ext.mixin.Observable
mixin(或从某些使用此mixin的类扩展)。
Ext.define('myClass', {
mixins: ['Ext.mixin.Observable'],
singleton: true,
config: {
myProperty: null
},
setMyProperty: function(value) {
this.myProperty = value;
this.fireEvent('myPropertySetted');
}
}
答案 1 :(得分:0)
接受答案中的评论实际上包含完整的答案,所以为了到达这里的googlers,我会打字:
答案是创建一个名为applyX或updateX的函数(其中X是您的大写属性),具体取决于您是否希望在配置中进行物理更改之前或之后(分别)接收新值。 Sencha将调用您的函数:
Ext.define('myClass', {
singleton: true,
config: {
myProperty: null
},
updateMyProperty: function(value) {
... do something with value. this.getMyProperty() will also work
}
}
在这里阅读更多内容: http://docs.sencha.com/touch/2.4/core_concepts/class_system.html