wentao365 2009-08-26 09:36
浏览 402
已采纳

listeners中为什么调不到this.onXXX方法

[code="java"]
var form = new Ext.FormPanel({
items: [{
fieldLabel: 'First Name',
name: 'first',
allowBlank:false
}],
listeners:{
'render':this.onRender,scope:this
},
onRender:function(){
alert("onRender....");
}
});
[/code]

请教一下 为什么不能调用到onRender呢?

报:

this.onRender is not a function
error source line: [Break on this error] this.onRender();\r\n
[b]问题补充:[/b]
谢谢几位的回答,

第一眼看:
[code="java"]
var form = new Ext.FormPanel({
items: [{
fieldLabel: 'First Name',
name: 'first',
allowBlank:false
}],
listeners:{
'render':form.onRender,scope:form
},
onRender:function(){
alert("onRender....");
}
});
[/code]

我觉得这样写一定可以,结果运行报:
[code="java"]
form is undefined
error source line: [Break on this error] 'render':form.onRender,scope:form\r\n
[/code]

我修改成:
[code="java"]
var form = new Ext.FormPanel({
items: [{
fieldLabel: 'First Name',
name: 'first',
allowBlank:false
}],
listeners:{
'render':this.onRender2,scope:form
},
onRender2:function() {
alert("onRender....");
}
});
[/code]
结果也不行 报:
x is undefined
error source line: [Break on this error] Ext.DomHelper=function(){var s=null,j=/^....stopEvent();this.completeEdit()}}}});\r\n

form担心关键字,改成_form也一样。

onRender担心关键字 改成 onRender2也一样。

[b]问题补充:[/b]
[quote]不用那么复杂,直接

Java代码
listeners:{

'render':function(){

this.onRender2()

}

} [/quote]

我知道这样说可以的,我就想知道 像我那个思路写 究竟该怎么改。

  • 写回答

7条回答 默认 最新

  • iteye_10013 2009-08-26 13:09
    关注

    没办法.

    这时候,form这个对象还没有创建,所以form.XXX肯定是不行的.
    而this.XXX呢,在定义的时候,这个this是属于外面的闭包的,所以也不行.

    那你这个onRender2一个form内部的函数,而在此时form是没有可用的引用的.

    要不你就那样做,要不你就不用listeners,而是在外面form.on

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号