RactiveJS-03 Expressions
来源:互联网 发布:oracle删除字段数据 编辑:程序博客网 时间:2024/06/11 01:11
自定义表达式(方法)
对于上一章的代码来说:
data : { country : { name : 'China', temperature : 'cold', rainfall : 'excessive', population : '120000000', capital : { name : 'beijing', lat : 501, lon : 299 } }}
可以像JS一样,定义的属性可以是一个函数(也就是对应的方法),在模板中调用这个方法对传入的数据进行处理,比如说可以再data中定义一个format的方法对数字进行处理:
data : { country : { name : 'China', temperature : 'cold', rainfall : 'excessive', population : '120000000', capital : { name : 'beijing', lat : 501, lon : 299 } } format: function ( num ) { if ( num > 1000000000 ) return ( num / 1000000000 ).toFixed( 1 ) + ' billion'; if ( num > 1000000 ) return ( num / 1000000 ).toFixed( 1 ) + ' million'; if ( num > 1000 ) return ( Math.floor( num / 1000 ) ) + ',' + ( num % 1000 ); return num; }}
在模板中使用这个方法只需要直接在常规的Mustaches中增加这个方法,将被处理的变量用括号括起来即可:
<p>Its population is {{format(population)}} and its capital is {{name}} and locates at {{lat}} and {{lon}}.</p>
最后的结果将120000000显示为120.0 million
JavaScript toFixed() 方法把 Number 四舍五入为指定小数位数的数字。
NumberObject.toFixed(num)
num必需,规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 >20,如果省略了该参数,将用 0 代替。
数学表达式
可以再模板的变量中直接使用数学表达式进行计算
// 模板<p>{{format(price * quantity)}}</p>// JS文件var ractive1 = new Ractive({ el : '#container', template : '#template', data : { price : 0.22, quantity : 2, format : function(num){ if(num<1){ return ( '¥' + num.toFixed(2) ) } return ( '^^^^' + num ) } }});//结果是¥ 0.44
之所以模板可以进行表达式的运算,是因为当模板被解析时,表达式中的变量都被定义了。当渲染时,绑定了这些变量的表达式也会创建一个函数去计算表达式的结果(无论何时,RactiveJS都会复用函数,无论是{{a+b}}还是{{x+y}}都共享一个函数)。
当变量的值发生改变,表达式会重新计算,并更新DOM
颜色混合的例子
<div id="container"></div><script type="text/ractive" id="template"> <div style='background-color : red; width : {{red*100}}%; height:50px'></div> <div style='background-color : green; width : {{green*100}}%; height:50px'></div> <div style='background-color : blue; width : {{blue*100}}%; height:50px'></div> <div style='background-color : rgb({{Math.round(red * 255)}}, {{Math.round(green * 255)}}, {{Math.round(blue * 255)}}; height:50px'></div></script><script> var ractive1 = new Ractive({ el : '#container', template : '#template', data : { red : 0.5, green : 0.5, blue : 0.5 } });</script>
上面的代码中:
1. 用red等同时表示了div的宽度和颜色的比例
2. 最后一个混合颜色的div的rgb值必须是整数,所以使用了Math.round()方法;
3. 通过ractive1可以更改颜色值,想要动态效果,可以使用.animate()方法:
ractive1.animate('red', '0.4')
Math对象是JS内置对象的一种,其他的众多的内置对象比如Data、encodeURI、JSON都可以在表达式中使用,详细的文档在此。
模板对象的表达式不包括赋值操作(包括++和–)、new、delete或者void,也不使用函数字面量。
- RactiveJS-03 Expressions
- Expressions
- Expressions
- Expressions
- RactiveJS-01 Hello Ractive
- RactiveJS-02 Nested properties
- RactiveJS-04 Event proxies
- RactiveJS-05 Conditional sections
- RactiveJS-06 List sections
- RactiveJS-08 Extending Ractive
- RactiveJS-11 Transitions
- RactiveJS-12 Lifecycle eventes
- RactiveJS-13 Components
- RactiveJS-14 Components Example
- RactiveJS-07 Triples (embedded HTML)
- RactiveJS-09 Two-way binding
- RactiveJS-10 Partial + Animation +SVG
- Regular Expressions
- iOS-常用 Git 命令清单
- android系统源码之 系统应用安装过程(上)
- 网易面试题——分饼干
- android EditText取消焦点且退出软键盘
- 杭电oj——1004(java版)Let the Balloon Rise
- RactiveJS-03 Expressions
- 【JVM】之 一些未解决问题
- [Java 数值] 数值类型之间的转换
- LabVIEW查找范例教程
- PAT_1025. PAT Ranking
- Swift语法摘要
- Eclipse下载Github上FastDFS-Client源码并转化成Maven工程以及打包到本地Maven仓库
- 网易面试题——奇怪的表达式求值
- RactiveJS-04 Event proxies