使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自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
Jan 06 Javascript
详解JWT token心得与使用实例
Aug 02 Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 Javascript
JS实现按比例缩小图片宽高
Aug 24 Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 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
MYSQL环境变量设置方法
2007/01/15 PHP
PHP Document 代码注释规范
2009/04/13 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
浅谈PHP中的
2016/04/23 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
python 测试实现方法
2008/12/24 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
行政内勤岗位职责
2014/04/07 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
小学优秀教师材料
2014/12/15 职场文书
运动员加油词
2015/07/18 职场文书
退伍军人感言
2015/08/01 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
索尼ICF-36收音机评测
2022/04/30 无线电