使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 &amp; DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
Jun 02 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
Feb 18 Javascript
JS逆序遍历实现代码
Dec 02 Javascript
js中的内部属性与delete操作符介绍
Aug 10 Javascript
JavaScript生成带有缩进的表格代码
Jun 15 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
vue2过滤器模糊查询方法
Sep 16 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 Javascript
TypeScript中条件类型精读与实践记录
Oct 05 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
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
JS返回顶部实例代码
2020/08/09 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
js实现内置计时器
2019/12/16 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python下载图片实现方法(超简单)
2017/07/21 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
办理信用卡收入证明范例
2014/09/13 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python