【问题标题】:Sencha Touch - Listeners and Event Delegation - will they blend?Sencha Touch - 听众和事件委托 - 他们会融合吗?
【发布时间】:2012-07-24 16:08:16
【问题描述】:

我最近开始在一个项目中使用 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
        }
    }
 });

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

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

【问题讨论】:

  • 很难理解你到底想问什么。您是否对设置 DOM 事件侦听器和组件事件侦听器感到困惑?如果您提供具体示例会有所帮助...
  • 嗯,我很好奇,如果可能的话,如何在同一个配置中设置元素和组件侦听器。此外,我还没有在 API 文档中看到关于元素事件侦听器的任何好的文档(尽管我可能已经错过了它)。我知道的元素侦听器的唯一方法是我的第一个示例中介绍的方法。
  • 看我的回答。你问的是这个吗?

标签: javascript extjs sencha-touch


【解决方案1】:

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

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

附:文档中的Ext.dom.Element 中描述了绑定元素事件侦听器。

【讨论】:

  • 谢谢 - 我认为我现在(或曾经)做事的方式肯定不是最好的方式,但是在紧迫的日程安排和准备好的布局上工作......我做了我能做的.我希望能够更轻松地同时添加元素和组件侦听器,因为组件可能有一个 contentEl 包含需要事件的部分(并且没有时间深入研究 Touch 组件的样式),但也会有所需的组件事件,例如绘制或显示。不过谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多