Up函数在元素的事件处理程序中不起作用

汤姆·O

我在下面的代码可以正常工作的以下代码:

var container = Ext.create('Ext.Container', {
                    html: 'Click Me!',
                    listeners: {
                        click: {
                            element: 'el',
                            fn: function() {
                                Ext.Msg.alert('Test', 'It was clicked!');
                             }
                         }
                     }
                 });

Ext.create('Ext.panel.Panel', {
    itemId: 'mainContainer',
    renderTo: Ext.getBody(),
    border: false,
    layout: {
        type: 'vbox',
        align: 'stretch'
    },
    items: [container]
});

在这个例子中,我只是警告一些废话,但是我实际上想使用'up()'方法获取父容器的itemId,但是它并没有像我期望的那样工作。例如,如果我将点击处理程序更改为此:

click: {
    element: 'el',
    fn: function() {
        console.log(this.up('panel'));
    }
}

然后记录为“ null”。为什么我不能在这里使用up()函数,并且有一种方法可以更改此代码,以便我可以使用它?

斯图尔特

为了扩展Surya的答案,this在事件处理程序中是引发事件的Ext.dom.Element实例,而不是Ext.Container实例。

一种替代方法是使用on方法添加侦听器,以便您可以将处理程序的作用域强制为容器实例。

container.on({
        click: {
            element: 'el',
            fn: function() {
                console.log(this.up('panel'));
            },
            scope: container
        }

    });

看一下这个小提琴,它实际上发挥了作用:

https://fiddle.sencha.com/#fiddle/1cka

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase $ save在事件处理程序函数中不起作用

来自分类Dev

drop 函数内的事件处理程序不起作用

来自分类Dev

Jquery prop函数在Change事件处理程序中不起作用

来自分类Dev

动态添加 DOM 元素单击事件函数在 angularJs 应用程序中不起作用

来自分类Dev

Webgrid中的单击事件处理程序不起作用

来自分类Dev

“ this”在点击事件处理程序中不起作用

来自分类Dev

setState 在事件处理程序中不起作用

来自分类Dev

OnChange事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

Javascript事件处理程序不起作用

来自分类Dev

JavaScript事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

onclick事件处理程序不起作用

来自分类Dev

类更改后,单击事件处理程序不起作用

来自分类Dev

声明多个事件处理程序不起作用

来自分类Dev

Bootstrap Switch事件处理程序不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

JavaScript按钮事件处理程序不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

使用jQuery添加事件处理程序不起作用

来自分类Dev

骨干事件处理程序不起作用

来自分类Dev

dom 操作/事件处理程序不起作用

来自分类Dev

为什么悬停在委托事件处理程序中不起作用?

来自分类Dev

更改事件处理程序中的(重新)渲染主干视图不起作用

来自分类Dev

内联事件处理程序在react.js中克隆后不起作用

来自分类Dev

删除不起作用的事件处理程序:Java中丢失了“此”上下文?

来自分类Dev

如果放置在setVisible(true)之后,则JDialog中的事件处理程序将不起作用

来自分类Dev

Typescript此关键字在jquery事件处理程序中不起作用

来自分类Dev

为什么document.ready中的事件处理函数起作用但取出后不起作用?

Related 相关文章

  1. 1

    Firebase $ save在事件处理程序函数中不起作用

  2. 2

    drop 函数内的事件处理程序不起作用

  3. 3

    Jquery prop函数在Change事件处理程序中不起作用

  4. 4

    动态添加 DOM 元素单击事件函数在 angularJs 应用程序中不起作用

  5. 5

    Webgrid中的单击事件处理程序不起作用

  6. 6

    “ this”在点击事件处理程序中不起作用

  7. 7

    setState 在事件处理程序中不起作用

  8. 8

    OnChange事件处理程序不起作用

  9. 9

    Opencart事件处理程序不起作用

  10. 10

    Javascript事件处理程序不起作用

  11. 11

    JavaScript事件处理程序不起作用

  12. 12

    Opencart事件处理程序不起作用

  13. 13

    onclick事件处理程序不起作用

  14. 14

    类更改后,单击事件处理程序不起作用

  15. 15

    声明多个事件处理程序不起作用

  16. 16

    Bootstrap Switch事件处理程序不起作用

  17. 17

    C#关闭事件处理程序不起作用

  18. 18

    JavaScript按钮事件处理程序不起作用

  19. 19

    C#关闭事件处理程序不起作用

  20. 20

    使用jQuery添加事件处理程序不起作用

  21. 21

    骨干事件处理程序不起作用

  22. 22

    dom 操作/事件处理程序不起作用

  23. 23

    为什么悬停在委托事件处理程序中不起作用?

  24. 24

    更改事件处理程序中的(重新)渲染主干视图不起作用

  25. 25

    内联事件处理程序在react.js中克隆后不起作用

  26. 26

    删除不起作用的事件处理程序:Java中丢失了“此”上下文?

  27. 27

    如果放置在setVisible(true)之后,则JDialog中的事件处理程序将不起作用

  28. 28

    Typescript此关键字在jquery事件处理程序中不起作用

  29. 29

    为什么document.ready中的事件处理函数起作用但取出后不起作用?

热门标签

归档