从 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' )
)
【讨论】:
感谢您的回复。这是行不通的。如果我以#monthCalendar
或container
而不是#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 的面板中选择一个容器的主要内容,如果未能解决你的问题,请参考以下文章