在特定组件中,这是我看到的现有代码:
this.on('afterrender',function(cmp){
this.somePanel.someTabPanel.setAsUnSelected();
},this);
我的问题是:cmp
是什么?它不是像btn
或e
这样的标准......是吗?
另外,传递最后一个'this'
对象的重点是什么? this.somePanel.someTabPanel.setAsUnSelected();
中包含的逻辑应该在afterrender之后执行。那么为什么我们在执行函数后将arg 'this'
传递给on
函数?
答案 0 :(得分: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”的方法定义:
on( String eventName, Function handler, [Object scope], [Object options] ) : void
它需要一个eventName:'afterrender',一个函数处理程序:你的“function(cmp){...},下一个参数是调用该函数的”范围“。在这种情况下,范围就像所有的javascript函数一样,你可以关闭以后的参数(如果你不需要它,你不需要传入“this”)
也许如果我重新格式化你的脚本会更清楚:
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
);