render

这里的事件响应主要是针对Button的事件响应来说的,主要有三种方式:

第一种是直接写handler: function() {},这种方式默认会去响应其click事件,

第二种是通过listeners属性来实现其事件的说明,如:

listeners: {

       "click": function() {}

第三种方式是通过on关键字来实现,如:

var btn = new Ext.Button();

btn.on("click",function() {})

 

对于render而言,如果在新建一个panel的时候指定了其render属性,那么在其后使用该对象来进行组件添加操作是不会成功的,因为有了render以后,系统会先将panel在页面上进行显示,然后通过异步的方式来执行后面的操作,所以当执行后续的添加操作时就不会进行显示了,如果确实需要这样来实现相关的添加操作,那么就可以监听其render事件,该监听方法会在render之前执行,这时候就可以把需要添加组件的操作在该方法中执行。当没有指定render属性的时候就可以随意的 进行添加操作了,只是最后需要手动的调用类似于panel.render(document.body)这样的方法。

 

 

示例代码如下:

Html代码   收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3.   <head>  
  4.     <title>03.html</title>  
  5.       
  6.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  7.     <meta http-equiv="description" content="this is my page">  
  8.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  9.       
  10.     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
  11.     <link rel="stylesheet" type="text/css" href="../ext4/resources/css/ext-all.css"/>  
  12.     <style type="text/css">  
  13.         * {  
  14.             text-align: center;  
  15.         }  
  16.     </style>  
  17.     <script type="text/javascript" src="../ext4/ext-all-debug.js"></script>  
  18.     <script type="text/javascript">  
  19.         Ext.onReady(function() {  
  20.             var myPanel = new Ext.form.Panel({  
  21.                 title: "panel",  
  22.                 width: 600,  
  23.                 height: 300,  
  24.                 renderTo: Ext.getBody(),  
  25.                 defaults: {//设置一些默认属性  
  26.                     xtype: "textfield",//默认的组件类型为textfield  
  27.                     width: 480  
  28.                 },  
  29.                 items: [{fieldLabel: "name"},{fieldLabel: "address"}],  
  30.                 buttons: [{  
  31.                     text: "确定",  
  32.                     handler: function() {  
  33.                         alert("确定");  
  34.                     }  
  35.                 },{  
  36.                     text: "取消",  
  37.                     listeners: {  
  38.                         "click": function() {  
  39.                             alert("取消");  
  40.                         }  
  41.                     }  
  42.                 }]  
  43.             });  
  44.             var myPanel2 = new Ext.panel.Panel({  
  45.                 title: "panel2",  
  46.                 width: 600,  
  47.                 height: 300,  
  48.                 renderTo: document.body,//如果在创建的时候就把这个panel依附到了document.body等容器中,  
  49.                 //那么如果在后面直接使用myPanel2.add(component)方法添加一个组件的时候该组件不会被显示在页面上,因为  
  50.                 //在依附的时候是把依附时候的模样显示在页面上的,如果确实需要在后面添加的时候还能进行显示的话就监听其render,并  
  51.                 //在该方法中做添加操作,这样panel在依附到指定的容器中的时候就会触发该事件,此时所做的添加组件操作就可以在页面上进行  
  52.                 //显示了  
  53.                 defaults: {  
  54.                     xtype: "textfield",  
  55.                     width: 480  
  56.                 },  
  57.                 items: [{fieldLabel: "name"},{fieldLabel: "address"}],  
  58.                 listeners: {  
  59.                     "render": function() {  
  60.                         var btn1 = new Ext.Button({text: "确定", width: 100});  
  61.                         var btn2 = new Ext.Button({text: "取消", width: 100});  
  62.                         btn1.on("click",function() {  
  63.                             alert("确定");  
  64.                         });  
  65.                         btn2.on("click",function() {  
  66.                             alert("取消");  
  67.                         });  
  68.                         this.add(btn1);  
  69.                         this.add(btn2);  
  70.                     }  
  71.                 }  
  72.             });  
  73.             var myPanel3 = new Ext.panel.Panel({  
  74.                 title: "panel3",  
  75.                 width: 500,  
  76.                 height: 200,  
  77.                 defaults: {  
  78.                     xtype: "textfield",  
  79.                     width: 350  
  80.                 },  
  81.                 items: [{fieldLabel: "name"},{fieldLabel: "address"}]  
  82.             });  
  83.             myPanel3.add(new Ext.Button({text: "确定", width: 100}));  
  84.             myPanel3.add(new Ext.Button({text: "取消", width: 100}));  
  85.             //如果确实需要手工一步一步的添加各种组件,那么这个时候就需要手动的将生成的panel依附到指定的容器了  
  86.             myPanel3.render(Ext.getBody());  
  87.         });  
  88.     </script>  
  89.   
  90.   </head>  
  91.     
  92.   <body>  
  93.       
  94.   </body>  
  95. </html>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值