Sencha Touch上的事件监听器生成了setter

时间:2014-01-02 21:12:56

标签: extjs sencha-touch

是否可以设置在用户定义的配置属性更改时触发的事件侦听器?实施例

Ext.define('myClass', {
    singleton: true,
    config: {
        myProperty: null
    }
}

我想设置一个监听器,以便在我调用myClass.setMyProperty('blah');时触发它。可能的?

2 个答案:

答案 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