使Ext的Template可以解析二层的json数据的方法


Posted in Javascript onDecember 22, 2007

Ext的Template支持通过传入json数据的方式进行模板替换。
API中有这样一段示例:

var t = new Ext.Template(  
    '<div name="{id}">',  
        '<span class="{cls}">{name:trim} {value:ellipsis(10)}</span>',  
    '</div>'  
);  
t.append('some-element', {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'}); 

稍作修改做个测试:

var t = new Ext.Template(  
    '<div name="{id}">',  
        '<span class="{cls}">{name} {value}</span>',  
    '</div>'  
);  
var dt=t.apply({id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'});  
alert(dt); 

运行上面的代码会弹出<div name="myid"><span class="myclass">foo bar</span></div>说明替换成功。

但如果又这样一个模板数据:

{id: 'myid', cls:{o:'myclass'}, name: 'foo', value: 'bar'} 

我们想在替换时将模板中原cls部分替换为cls.o的值,也就是myclass,该怎么做呢?是不是想直接用{cls.o},你可以试下,绝对无效,没有替换。因为template匹配替换是直接对{}中冒号前的字符串与JSON变量进行匹配的。当然找不到cls.o这个串所以也就不能匹配。
好在Template支持对数据的解析处理。
我们可以自己定义一个解析函数即可。其实很简单:

var t = new Ext.Template(  
    '<div name="{id}">',  
        '<span class="{cls:this.parseJSON}">{name} {value}</span>',  
    '</div>'  
);  
t.parseJSON=function(data){return data.o};  
var dt=t.apply({id: 'myid', cls: {o:'myclass'}, name: 'foo', value: 'bar'});  
alert(dt) 

我们定义了一个叫parseJSON的解析方法,在模板中访问顶层的cls然后对cls(是一个object)的值进行处理(直接访问它的o属性)即可。

Javascript 相关文章推荐
JavaScript CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
JS获取并操作iframe中元素的方法
Mar 21 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
详解javascript传统方法实现异步校验
Jan 22 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
JavaScript优化以及前段开发小技巧
Feb 02 Javascript
详解Vue中添加过渡效果
Mar 20 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
mui上拉加载功能实例详解
Apr 13 Javascript
开发中常用的25个JavaScript单行代码(小结)
Jun 28 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
Dec 20 #Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 #Javascript
麦鸡的TAB切换功能结合了javascript和css
Dec 17 #Javascript
用javascript来实现动画导航效果的代码
Dec 16 #Javascript
不用ajax实现点击文字即可编辑的方法
Dec 16 #Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 #Javascript
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 #Javascript
You might like
各种快递查询--Api接口
2016/04/26 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
JS编程小常识很有用
2012/11/26 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
Python struct模块解析
2014/06/12 Python
Python实现自动上京东抢手机
2018/02/06 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
pandas 空数据处理方法详解
2019/11/02 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
论文诚信承诺书
2014/05/23 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
毕业设计论文评语
2014/12/31 职场文书
公司租车协议书
2015/01/29 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis