使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 相关文章推荐
Jquery 动态添加按钮实现代码
May 06 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
Node.js JSON模块用法实例分析
Jan 04 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 Javascript
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
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
多人战的战术与战略
2020/03/04 星际争霸
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php算法实例分享
2015/07/14 PHP
php图像处理类实例
2015/07/28 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
封装好的省市地区联动控件附下载
2007/08/13 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
Python作用域与名字空间原理详解
2020/03/21 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
新东网科技Java笔试题
2012/07/13 面试题
CSMA/CD介质访问控制协议
2015/11/17 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
小学清明节活动方案
2014/03/08 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
企业宣传口号
2014/06/12 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
2016春节家属慰问信
2015/03/25 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python