使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 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
js实现仿购物车加减效果
Mar 01 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
VUE 全局变量的几种实现方式
Aug 22 Javascript
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
Node.js中console.log()输出彩色字体的方法示例
Dec 01 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 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
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
js保留两位小数使用toFixed实现
2013/07/29 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
ptyhon实现sitemap生成示例
2014/03/30 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
教师年度考核评语
2014/04/28 职场文书
销售员自我评价
2015/03/11 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
求职信如何撰写?
2019/05/22 职场文书
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android
关于MySQL中explain工具的使用
2023/05/08 MySQL