Sencha Touch - 听众和活动授权 - 他们会融合吗?

时间:2012-07-24 16:08:16

标签: javascript extjs sencha-touch

我最近开始在一个项目上使用Sencha Touch,虽然我已经使用ExtJS一段时间了,但两者在很多方面都有所不同。为了使学习曲线复杂化,我将ST应用为更多的底层框架,而不是整个UI /框架/一切都处理。因此,我遇到过一种情况,我想使用数组方法为元素设置监听器,同时也希望保持使用诸如“画”之类的事件。

这是一个例子 - 我99%肯定有更好的方法来做我想做的事情:

Ext.create('Ext.Container', {
    html: '<ul><li id="blah">Blah</li><li id="hooey">Hooey</li></ul>',
    listeners: [{
        element: 'element',
        delegate: 'li#blah',
        event: 'tap',
        fn: function() { /* do something for blah */ }
    },{ 
        /* repeat for hooey, etc */
    }]
});

另一方面,如果我想在容器上使用标准监听器怎么办?

Ext.create('Ext.Container', {
    listeners: {
        activate: function() {
            // do some stuff here
        }
    }
 });

我想知道在同一个组件上执行这些操作的最佳实践,而不是必须执行激活侦听器,然后将元素点击事件处理程序应用于activate / show / paint / whathaveyou上的组件。

注意:使用extjs标记,因为我假设它也适用于那里 - 如果没有,请随时编辑或让我知道,我会拉标签。

1 个答案:

答案 0 :(得分:1)

通常,你不应该从另一个组件中弄乱组件的元素,想象它们就像私有属性(组件的渲染html可以改变,所以不要依赖它),你的第一个例子中的代码看起来不太好,我甚至不知道这可以起作用。您应该实现组件事件以导出到外部世界。

在某些特定情况下,您可以通过getEl(),getScrollerEl()等方法导出元素。但大多数情况下,这表明您做错了。

P.S。绑定元素事件侦听器在文档中的Ext.dom.Element中进行了描述。