Ext2.0.2经典的一个JS组件(带EXT中文手册)(3)
作者:姚海啸 来源:Yaohaixiao’s Blog 发布时间:2009-04-13 12:24:00
MessageBox
比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。
在上面的paragraphClicked的function中,将这行代码:
Ext.get(e.target).highlight();
替换为:
var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({
title: ‘Paragraph Clicked’,
msg: paragraph.dom.innerHTML,
width:400,
buttons: Ext.MessageBox.OK,
animEl: paragraph
});
这里有些新的概念需要讨论一下。在第一行中我们创建了一个局部变量(Local Variable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,DOM节点指的是段落paragrah,事因我们已经定义该事件与< p>标签发生关联的了)。为什么要这样做呢?嗯…观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。
一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个具备良好OO思维的开发者,应该是将其分配到一个局部变量中,反复使用这变量!
现在,为了我们接下来阐述新概念的演示,请观察MessageBox的调用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Object literal,包含一组属性和属性值。在Javascript中,Object Literal是动态的,你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经常遇到这种语法,因此你应该马上消化并吸收这个知识点!
使用Object Literal的原因是什么呢?主要的原因是“可伸缩性(flexibility)”的考虑”,随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null, null, null, ‘hello’).,若果那方法用Object Literal来写,却是这样, foo.action({ param4: ‘hello’ }),这更易用和易读。


猜你喜欢
- 最近在做公司的某个从项目,基本设计和淘宝登陆页类似: 1)文本框内容为空是,文本框右侧无清除按钮,当有内容时立即显示清除按钮;2)当文本框失
- 通配符过滤通配符:用来匹配值的一部分特殊字符。通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。搜索模式:由字面值、通配符或者两者
- 解决办法:1.Goland--->Preferences...--->Go--->GOPATH--->Project
- 遇到一个问题,需要正则匹配远端FTP目录下的文件,如果使用ftp客户端可以通过命令行很容易的做到这一点,但是暂时没有一个工具支持这样的需求,
- 用nodejs怎样来实现对微信公众平台的开发呢?别的就不多说了,先来简单介绍微信公众平台的基本原理。微信服务器就相当于一个转发服务器,终端(
- 前言minio分享文件的链接,最多支持分享七天通过 MinIO客户端 管理存储桶策略的方式实现文件链接永久有效1.下载MinIO Clien
- 马氏距离区别于欧式距离,如百度知道中所言:马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Ma
- python 2.7.11django 1.8.4错误内容:related Field has invalid lookup: iconta
- 目录1、sysbench介绍#项目下载地址:2、sysbench安装过程#安装相关依赖#安装过程开始#提示说明:#常规命令行选项#sysbe
- tuple函数功能和list功能很相似,以序列为参数并把它转换为元组>>> tuple([1,2,3])(1, 2, 3)
- 1.问题引入假设一个场景,一张用户表,包含3个字段。id,identity_id,name。现在身份证号identity_id和姓名name
- 今天来说说鄙人对input输入框在处理上的细节处理和心得,其实制作一个符合CSS标准、FF/IE7/IE6等主流浏览器全兼容、符合用户体验的
- 本文实例讲述了Python类的用法。分享给大家供大家参考。具体如下:先看一段代码:#!/usr/bin/env pythonclass Te
- 本文实例讲述了Node.js API详解之 Error模块用法。分享给大家供大家参考,具体如下:Node.js API详解之 ErrorNo
- 引言之前松哥写过一个 MySQL 系列,但是当时是基于 MySQL5.7 的,最近有空在看 MySQL8 的文档,发现和 MySQL5.7
- 本文实例为大家分享了python通过实例方法名字调用方法的具体代码,供大家参考,具体内容如下案例: &nb
- 1.创建tfrecordtfrecord支持写入三种格式的数据:string,int64,float32,以列表的形式分别通过tf.trai
- 如果你已经理解了block formatting contexts那么请继续,否则请先看看这篇文章。Overflow能够做一些很牛掰的事情,
- 两个例子package main import ( "fmt" "time")func Proces
- Django url pathDjango 路由在 urls.py 配置path('浏览器地址栏表示URL', '处