Ext(4)——事件响应和render问题

简介: 这里的事件响应主要是针对Button的事件响应来说的,主要有三种方式: 第一种是直接写handler: function() {},这种方式默认会去响应其click事件, 第二种是通过listeners属性来实现其事件的说明,如: listeners: {        "clic...

这里的事件响应主要是针对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)这样的方法。

 

 

示例代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>03.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <link rel="stylesheet" type="text/css" href="../ext4/resources/css/ext-all.css"/>
    <style type="text/css">
    	* {
    		text-align: center;
    	}
    </style>
    <script type="text/javascript" src="../ext4/ext-all-debug.js"></script>
    <script type="text/javascript">
    	Ext.onReady(function() {
    		var myPanel = new Ext.form.Panel({
    			title: "panel",
    			width: 600,
    			height: 300,
    			renderTo: Ext.getBody(),
    			defaults: {//设置一些默认属性
    				xtype: "textfield",//默认的组件类型为textfield
    				width: 480
    			},
    			items: [{fieldLabel: "name"},{fieldLabel: "address"}],
    			buttons: [{
    				text: "确定",
    				handler: function() {
    					alert("确定");
    				}
    			},{
    				text: "取消",
    				listeners: {
    					"click": function() {
    						alert("取消");
    					}
    				}
    			}]
    		});
    		var myPanel2 = new Ext.panel.Panel({
    			title: "panel2",
    			width: 600,
    			height: 300,
    			renderTo: document.body,//如果在创建的时候就把这个panel依附到了document.body等容器中,
    			//那么如果在后面直接使用myPanel2.add(component)方法添加一个组件的时候该组件不会被显示在页面上,因为
    			//在依附的时候是把依附时候的模样显示在页面上的,如果确实需要在后面添加的时候还能进行显示的话就监听其render,并
    			//在该方法中做添加操作,这样panel在依附到指定的容器中的时候就会触发该事件,此时所做的添加组件操作就可以在页面上进行
    			//显示了
    			defaults: {
    				xtype: "textfield",
    				width: 480
    			},
    			items: [{fieldLabel: "name"},{fieldLabel: "address"}],
    			listeners: {
    				"render": function() {
    					var btn1 = new Ext.Button({text: "确定", width: 100});
    					var btn2 = new Ext.Button({text: "取消", width: 100});
    					btn1.on("click",function() {
    						alert("确定");
    					});
    					btn2.on("click",function() {
    						alert("取消");
    					});
    					this.add(btn1);
    					this.add(btn2);
    				}
    			}
    		});
    		var myPanel3 = new Ext.panel.Panel({
    			title: "panel3",
    			width: 500,
    			height: 200,
    			defaults: {
    				xtype: "textfield",
    				width: 350
    			},
    			items: [{fieldLabel: "name"},{fieldLabel: "address"}]
    		});
    		myPanel3.add(new Ext.Button({text: "确定", width: 100}));
    		myPanel3.add(new Ext.Button({text: "取消", width: 100}));
    		//如果确实需要手工一步一步的添加各种组件,那么这个时候就需要手动的将生成的panel依附到指定的容器了
    		myPanel3.render(Ext.getBody());
    	});
    </script>

  </head>
  
  <body>
    
  </body>
</html>
目录
相关文章
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
752 2
|
JSON 安全 数据安全/隐私保护
从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
【9月更文挑战第22天】在.NET 8中,从零开始搭建权限管理系统并使用JWT(JSON Web Tokens)创建Token是关键步骤。JWT是一种开放标准(RFC 7519),用于安全传输信息,由头部、载荷和签名三部分组成。首先需安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,并在`Program.cs`中配置JWT服务。接着,创建一个静态方法`GenerateToken`生成包含用户名和角色的Token。最后,在控制器中使用`[Authorize]`属性验证和解析Token,从而实现身份验证和授权功能。
1120 4
|
SQL Oracle 关系型数据库
Entity Framework Core 实现多数据库支持超厉害!配置连接、迁移与事务,开启多元数据库之旅!
【8月更文挑战第31天】在现代软件开发中,为了满足不同业务需求及环境要求,常需支持多个数据库系统。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)框架,通过数据库提供程序与多种数据库如SQL Server、MySQL、PostgreSQL、Oracle等交互。开发者可通过安装相应NuGet包并配置`DbContextOptionsBuilder`来指定不同数据库连接,从而实现多数据库支持。
1462 0
|
缓存 安全 程序员
php程序员必备的7种能力
本技能概览聚焦PHP开发核心能力。首先,需精通PHP语法与面向对象编程,确保代码既高效又易于维护。其次,在数据库操作上,应熟练使用MySQL等,构建高性能查询并优化数据库表现。此外,掌握Laravel等主流框架,以加速应用开发流程。同时,具备出色的调试技巧与安全意识,能迅速定位并修复错误,有效防御各类攻击。还需关注程序性能,通过代码及数据库优化等手段提升运行效率,并善用缓存技术。最后,在团队协作中发挥积极作用,与各角色紧密配合,共同推进项目进展。
|
编解码 开发工具 开发者
Flutter 中的 WidgetInspector 小部件:全面指南
但它主要用于调试目的,在生产环境中应该谨慎使用。
250 2
|
Ubuntu
Ubuntu双显示屏如何设置竖屏
本文介绍了如何在Ubuntu操作系统中设置双显示屏,特别是如何通过命令行将外接显示屏设置为竖屏显示。文章提供了详细的步骤,包括使用`xrandr`命令查询显示屏、旋转屏幕,以及尝试设置开机自启动和开机手动启用的方法。
697 0
|
存储 SQL 人工智能
数据库技术:原理、应用与未来趋势
一、引言 数据库技术作为现代信息科技的重要组成部分,不仅为数据的存储、检索和管理提供了强大的支撑,还在推动数字化转型、大数据分析和人工智能等领域的发展中发挥着关键作用
|
机器学习/深度学习 算法 自动驾驶
深度强化学习在大模型中的应用:现状、问题和发展
强化学习在大模型中的应用具有广泛的潜力和机会。通过使用强化学习算法,如DQN、PPO和TRPO,可以训练具有复杂决策能力的智能体,在自动驾驶、机器人控制和游戏玩家等领域取得显著成果。然而,仍然存在一些挑战,如样本效率、探索与利用平衡以及可解释性问题。未来的研究方向包括提高样本效率、改进探索策略和探索可解释的强化学习算法,以进一步推动强化学习在大模型中的应用。
3271 3
|
机器学习/深度学习 监控 算法
ICCV2023 | 基于动作敏感性学习的时序动作定位
ICCV2023 | 基于动作敏感性学习的时序动作定位
804 0
|
Linux Apache
linux 安装 Apache 服务 并部署网站
linux 安装 Apache 服务 并部署网站
402 0