77范文网 - 专业文章范例文档资料分享平台

强大的EXT最新使用手册(中文)(5)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

myNameSpace.app = function() { // 元素还没创建,未能访问 // 私有变量 var btn1; var privVar1 = 11; // 私有函数 var btn1Handler = function(button, event) { alert('privVar1=' + privVar1); alert('this.btn1Text=' + this.btn1Text); }; // 公共空间 return { // 公共的属性,如,要转译的字符串 btn1Text: 'Button 1' // 公共方法 , init: function() { btn1 = new Ext.Button('btn1-ct', { text: this.btn1Text , handler: btn1Handler }); } }; }(); //程序底部 // 文件底部 变量btn1 和privVar1 是私有的。 那意味着在程序外部他们是不能够被访问的,而且也不可见。私有函数btn1Handler也是同样道理。

另外一个方面,btn1Text是公共变量所以可以被程序外部访问或者是修改(我们稍后将会演示)。 函数init是特权的,即是私有变量和公共变量两者都可以被它访问到。在本例中,公共变量this.btn1Text和私有函数btn1Handler都能够被特权函数init所访问。同时,相对外界来说,它也属于公共成员的一种。

Ok,运行看看。能看到左上角的按钮吗?很好,点击它。得到一个privVar1=11的警告。这说明私有函数能访问私有变量。

但是在第二个警告中遇到了this.btn1Text=undefined的问题,这好像不应该这样。个中原因是因为位

于事件句柄(event handler)中的变量this没有正确指向到我们的程序。你需要用scope:this 指明这个作用域(这里的this关键字所指示的scope应该是btn1变量): btn1 = new Ext.Button('btn1-ct', { text: this.btn1Text , handler: btn1Handler , scope: this }); 刷新一下,可以了吧?

重写公共变量

在applayout.js底部加入下列代码: Ext.apply(myNameSpace.app, { btn1Text:'Taste 1' }); // 文件底部 这代码是用来干什么的呢?首先它创建了我们的程序对象然后改变(重写)公共变量btn1Text的值。运行后将看到按钮上文字的变化。

把文本都放到公共变量,以便于以后的国际化翻译工作,而不需要修改程序的内部代码。

当然你也可以将其它的值例如尺寸、样式、等等的总之是可自定义的选项都放到公共变量中。免于在数千行代码之中为查找某个颜色而费劲。

重写(Overriding)公共函数

接着更改一下代码,让它读起来是这样的: Ext.apply(myNameSpace.app, { btn1Text:'Taste 1' , init: function() { try { btn1 = new Ext.Button('btn1-ct', { text: this.btn1Text , handler: btn1Handler , scope: this }); } catch(e) { alert('错误: \发生在行: ' + e.lineNumber); } } }); // end of file 我们这里将init重写了一篇,主要是在原来代码的基础上加入异常控制,以便能够捕获异常。试运行一下看还有没有其它的变化?

嗯 是的,出现了btn1Handler 未定义的错误。这是因为新的函数虽然尝试访问私有变量但它实际是不允许的。正如所见,原init是特权函数可访问私有空间,但新的init却不能。之所以不能访问私有空间,是因为:禁止外部代码No code from outside,哪怕是尝试重写特权方法。

DomQuery基础

本教程旨在为读者了解怎样利用单例对象Ext.DomQuery,浏览穿梭于DOM树之中和获取对象,提供一个起点。

DomQuery基础

DomQuery的select函数有两个参数。第一个是选择符字符(selector string )而第二个是欲生成查询的标签ID(TAG ID)。

本文中我准备使用函数“Ext.query”但读者须谨记它是“Ext.DomQuery.select()”的简写方式。

这是要入手的html: I'm a div ==> my id: bar, my class: foo An ExtJs link my id: foo, my class: bar

I'm a P tag within the foo div

An internal link 第一部分:元素选择符Selector

假设我想获取文档内所有的“span”标签:

// 这个查询会返回有两个元素的数组因为查询选中对整个文档的所有span标签。 Ext.query(\ // 这个查询会返回有一个元素的数组因为查询顾及到了foo这个id。 Ext.query(\注意刚才怎么传入一个普通的字符串作为第一个参数。 按id获取标签,你需要加上“#”的前缀: // 这个查询会返回包含我们foo div一个元素的数组! Ext.query(\按class name获取标签,你需要加上“.”的前缀: /*这个查询会返回有一个元素的数组, 包含与之前例子一样的div但是我们使用了class name来获取*/ Ext.query(\你也可以使用关键字“*”来获取所有的元素: // 这会返回一个数组,包含文档的所有元素。 Ext.query(\要获取子标签,我们只须在两个选择符之间插入一个空格: // 这会返回有一个元素的数组,包含p标签的div标签 Ext.query(\// 这会返回有两个元素的数组,包含span标签的div标签 Ext.query(\

还有三个的元素选择符,待后续的教程会叙述。 \

如果朋友你觉得这里说得太简单的话,你可以选择到DomQuery 文档看看,可能会有不少收获:)

第二部分:属性选择符Attributes selectors

这些选择符可让你得到基于一些属性值的元素。属性指的是html元素中的href, id 或 class。 // 我们检查出任何存在有class属性的元素。 // 这个查询会返回5个元素的数组。 Ext.query(\// 结果: [body#ext-gen2.ext-gecko, div#bar.foo, span.bar, div#foo.bar, span.bar] 现在我们针对特定的class属性进行搜索。 // 这会得到class等于“bar”的所有元素 Ext.query(\ // 这会得到class不等于“bar”的所有元素 Ext.query(\ // 这会得到class从“b”字头开始的所有元素 Ext.query(\ //这会得到class由“r”结尾的所有元素 Ext.query(\ //这会得到在class中抽出“a”字符的所有元素 Ext.query(\第三部分: CSS值元素选择符

这些选择符会匹配DOM元素的style属性。尝试在那份html中加上一些颜色: 我是一个div ==> 我的id是: bar, 我的class: foo

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库强大的EXT最新使用手册(中文)(5)在线全文阅读。

强大的EXT最新使用手册(中文)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/473798.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: