从 extjs 的面板中选择一个容器

Posted

技术标签:

【中文标题】从 extjs 的面板中选择一个容器【英文标题】:select a one of the containers from panel in extjs 【发布时间】:2013-03-07 07:50:38 【问题描述】:

Extjs 4.1.1(a),在我的项目中,有一个面板(ID 为 #monthCalendar),它的视图中有 42 个容器。我正在尝试为该视图创建一个控制器。在这里,控制器的操作是在我单击面板内的任何容器时显示“hello”消息。我尝试了以下在 chrome 控制台中没有显示任何错误的方法。

在我的控制器中:

onLaunch: function()
    Ext.each(Ext.ComponentQuery.query('#monthCalendar container'),function(container)
        container.on('click',function()
            alert("hello");
        ,container,element: 'el')
    )

【问题讨论】:

@MolecularMan 你为什么删除你的帖子?它奏效了。 【参考方案1】:

这个应该可以的

Ext.each(Ext.ComponentQuery.query('#monthCalendar container'),function(c)
    c.on( click: fn: function() alert("hello"); ,scope: this, element:'el' )
)

【讨论】:

感谢您的回复。这是行不通的。如果我以#monthCalendarcontainer 而不是#monthCalendar container 进行查询,则该功能可以正常工作。这里可能是什么错误?我 100% 确定面板有这些容器(动态添加)。 @Mr_Green 请看这个工作 JSFiddle 并确保所有组件都被渲染! F.e.这不是 onLaunch 而是 #monthCalendar 的 afterrender 。 对不起,我从删除他帖子的用户那里得到了解决方案。调用 click 事件时,I 容器未重新渲染。 @Mr_Green 你为什么对不起 :) 看看我的最后一条评论,它说的是一样的 ;) 是的,现在看到了:)。我将您标记为答案,因为我会得到两分:D(渴望积分)而且您在 extjs 中帮助了我很多。谢谢。【参考方案2】:

似乎在调用 click 事件时面板内的容器没有重新渲染。(虽然,容器在页面上可见。我不知道可能是什么错误?)所以,而不是使用 @987654322 @,我使用了init 模板,在该模板中我调用了render 事件(间接称为click 事件)并且这有效。

init: function()
    this.control(
        '#monthCalendar container': 
            render: this.onContainerRendered
        
    )
,
onContainerClicked: function() 
    alert('The container was clicked');
,
onContainerRendered: function(container) 
    container.on('click',this.onContainerClicked,container,element: 'el')
,

Working Fiddle

【讨论】:

以上是关于从 extjs 的面板中选择一个容器的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJs 4.1 中选择树面板的第一个叶节点

EXTJS 4.1 如何在树面板中选择下一个叶节点

ExtJS 添加面板上面已经添加的面板

如何在 extjs 4 中选择网格面板行作为 HTMLELEMENT

为啥单击 ExtJS 4 网格面板操作列中的图标不选择行?

在 ExtJS 中突出显示/选择网格行