2011-02-01 43 views
0

里面一个特定组成部分,这是现有的代码,我看到:为什么多余的参数在extjs中传递给this.on函数?

this.on('afterrender',function(cmp){ 
this.somePanel.someTabPanel.setAsUnSelected(); 
},this); 

我的问题是:什么是cmp?这不是像btne ......这是不是一个标准的东西? 另外,在最后的'this'对象中传递的是什么?包含在this.somePanel.someTabPanel.setAsUnSelected();中的逻辑应该在执行之后执行。那么为什么在函数执行后我们将参数'this'传递给on函数呢?

+2

你好。在精确指定将什么参数传递给事件处理程序的API文档旁边,请在处理程序中尝试console.dir(cmp)。这为您的开发控制台(safari/chrome中的firebug或开发人员工具)输出了一个很好的可导航对象,其中很容易看到它是哪种动物 – 2011-02-01 08:46:57

回答

0

你真的应该看看API文档:http://dev.sencha.com/deploy/dev/docs/

如果此事件是为EditorGridPanel(http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.EditorGridPanel),它表明一个Ext.Component传入的变量名“CMP”只是一个名字。 - 它没有真正的意义。在这种情况下,它只是指传入的组件(本例中为编辑器网格)。出于同样EditorGridPanel(或任何你正在使用的组件),看看在“开”的方法定义:

on(String eventName, Function handler, [Object scope], [Object options]) : void 

它需要一个eventName的:“一个AfterRender”,一个函数处理程序:你的“功能(CMP) {...},下一个参数是函数被调用的“范围”。在这种情况下,范围是“this”。与所有javascript函数一样,您可以关闭稍后的参数(您不需要需要通过在“本”,如果你不需要它)

也许如果我重新格式化你的脚本说清楚点:

this.on(
    'afterrender', //this is the first parameter passed to the 'on' method 
    function(cmp) { 
    this.somePanel.someTabPanel.setAsUnSelected(); 
    }, //the function that will be called (after rendering) is the 2nd parameter 
    this //this is 3rd argument that the "on" method takes, the "scope that the function is called in 
); 
相关问题