Ext JS 4 新特性2:配置项属性(config)之一
Ext JS 4 新特征2:配置项属性config
最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属性,依靠输入参数来改变我们某类的值属性和行为属性。Ext JS 4就在这方面使用了提前-处理机制来为我们处理配置,事实上很简单的就完成了这方面的任务。
举例:我手头上有一些发货单据,想统计一下,每张发货单上有以下内容:客户名称、税金、小计、合计,其中:合计 = 小计*税金,税率为0.083。
//定义数据的发货单类,如下
Ext.define('MyApp.data.Invoice',{
config : { //第1步
client : '',
tax : 0.083,
subtotal: ,
total :
},
//想通过税金来自动计算每张发货单的合计值,
applySubtotal : function(value){
var me = this;
me.setTotal(value + value * me.getTax());
return(value);
}
});
//开始创建一张空白的发货单:
var invoice = Ext.create('MyApp.data.Invoice');
//显示空白的发货单据,目的是看这个对象是否真正的有了各项属性。
console.log("单位: "+invoice.getClient());
console.log("税率: "+invoice.getTax());
console.log("小计: "+invoice.getSubtotal());
console.log("合计:"+invoice.getTotal()); //开始填入第1张发货单据:
invoice.setClient("Tuxtux企业有限公司"); //填入客户名称
invoice.setSubtotal(); //填入单据金额小计,同时会自动产生合计数。 //第1张发货单填完,显示其内容:
console.log("单位: "+invoice.getClient());
console.log("税率: "+invoice.getTax());
console.log("小计: "+invoice.getSubtotal());
console.log("合计:"+invoice.getTotal());
19-22行运行结果,如下: 29-32行运行结果,如下:
当我们使用config预-处理机时,Ext就会自动地创建了config项中对应的setters和getters函数,象client就会有了setClient(“ ”);和getClient();这样一对函数,来对client进行赋值和获值。这是需要记住的一点:买一送二概念,实际上应该是买一赠四的事实。
为了方便,需要自动计算发货单上的 合计= 小计 * 税率,那我们怎样做呢?Ext提供了apply方法用于每个config配置项,这样就要增加一个自定义逻辑,需要对小计subtotal进行aplly覆盖,如下:
Ext.define('MyApp.data.Invoice',{
。。。
//在这里需要设置自己的公式,自动生成合计数。
applySubtotal : function(value){ //第1步
var me = this;
me.setTotal(value + value * me.getTax()); //第2步,公式
return(value); //第3步,把1000返回到subtotal属性
}
});
关键的一点就是对这句话的理解:
…在向属性设置新值之前,自动产生的setter方法在内部调用了apply方法,…
也就是“之前”意味着虽然我是手动调用invoice.setSubtotal(1000),但applySubtotal(1000)是要先于invoice.setSubtotal(1000) “之前”运行的。通过实验,我把第3步去掉,程序显示subtotal是“未定义”
对subtotal项进行apllySubtotal覆盖时,它只有在调用了setSubtotal()时才被动调用的。也就是说随随便便Ext就自动运行了。
…
在之前,applySubtotal(1000)方法就开始执行了,如下:
第1步:执行这步
第2步:根据公式合计 = 小计 *税率,把结果设置成合计的值。
第3步:把1000这个值返回到小计subtotal这个属性上,
返回值,我不明白。我想对属性subtotal返回了这个值(1000),如果不这样做的话,对于属性subtotal将不会被改变,在程序中显示的是undefined(我实验了),这也是。所以这句是必须的。
Config配置项结论一:有config词的时候,要注意查看apply属性项的函数。记住:调用setSubtotal(1000)的触发之前要先执行是applySubtotal()这个函数。
Ext JS 4 新特性2:配置项属性(config)之一的更多相关文章
- Ext JS 6 新特性和工具
Ext JS 6 新特性和工具 Ext JS 6 带来很多新特性.工具和改进.以下是一些亮点: • 合并了 Ext JS & Sencha Touch - 在 Ext 6, 你可以访问 Ext ...
- Ext JS 4 新特性2:配置项属性(config)之二
Ext JS 4 新特征2:配置项属性config之二 ☞ Config(自动的setters和getters) Ext JS 4介绍了config声明方式,在Ext JS 中也有几个例子:在运行程序 ...
- JS 4 新特性:混合属性(mixins)
Ext JS4的新特征1:混合属性(mixins) 组合是Extjs4的新特性,可用于实现多继承的情况.该属性会以同步方式加载类文件,并实例化该类(译者推理其内部使用Ext.create方法).直接上 ...
- JS 4 新特性:混合属性(mixins)之二
Mixins many classes[混合许多个类] 迄今为止,我们已经学会了简单的继承,我们还能够通过使用mixins处理机制来混合许多类.源于这种理念是非常简单的:我们能够把许多个类最终混合到一 ...
- 最新iOS 6 in Xcode4.5新特性——Storyboard和属性自动绑定
最新iOS 6 in Xcode4.5新特性编程之二(上)——Storyboard和属性自动绑定 从Xcode 4.3开始,Storyboard 就是iOS 5和iOS 6中令人兴奋的一个新特性,他将 ...
- html5新特性contenteditable 属性更容易实现动态表单
介绍html5新特性的一个属性:contenteditable 作用域全局.所有的块标签都可以,例如:span.p.div.td等标签.但是,不可以作用域<br/>类型的标签. conte ...
- Ext Js详解指南
什么是Ext JS 走进Ext的世界 Ext JS是一款富客户端开发框架它基于javascript.HTML和CSS开发而成,无需安装任何插件即可在常用浏览器中创建出绚丽的页面效果. 个人总结Ext ...
- 发布Ext JS 5.1 beta版本
原文:Announcing Ext JS 5.1 Beta 概述 我们很高兴的宣布,Ext JS 5.1 beta发布了.自从Ext JS 5.0.1,我们一直在努力添加一些令人兴奋的和一些在Senc ...
- Ext JS 5的声明式事件监听
在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...
随机推荐
- linux下安装mysql5.7.17及简单配置
原文:http://www.th7.cn/db/mysql/201612/218745.shtml 1.mysql5.7.17安装在/usr/local/mysql目录里面,也可以安装在其他地方 (安 ...
- js_多个引号的用法
str += "<input id='sel_DayB' width='120' onfocus=\"WdatePicker({skin:'whyGreen',dateFmt ...
- spark快速大数据分析学习笔记*初始化sparkcontext(一)
初始化SparkContext 1// 在java中初始化spark import org.apache.spark.SparkConf; import org.apache.spark.api.ja ...
- MySQL 显示版本、端口、状态
status select version() show global variables like 'port'
- webp性能测评
一.测评目的 通过分析webp图片在不同条件下的性能表现,来确定webp图片的适用场景. 二.测评方式 使用控制变量法,分别从以下3点对webp与jpg图片做对比,得出结论. 1.页面图片总体积. 2 ...
- 配置appium 1.6.3 for MAC
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } 安装 ...
- asp.net登录时验证码的制作与验证
1.新建一个页面,ImageCode.aspx 2.在Page_Load中添加如下代码 string tmp = RndNum(4); HttpCookie a = new HttpCookie(&q ...
- IDE编辑器编码配置
做跨平台开发时,大家用不同的IDE合作开发,最令人头疼的事就是各种乱码问题. 常用的IDE都支持utf-8编码和unix格式行尾'\n'. 1.XCODE设置文本编码及换行Xcode >> ...
- DataFormatString 转
数据绑定之DataFormatString 设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货 ...
- Centos下MySQL主从同步配置
说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样, 因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave ...