使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基本对象
Jan 11 Javascript
Js 获取当前日期时间及其它操作实现代码
Mar 04 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
Aug 14 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
Apr 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
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
详解Document.Cookie
2015/12/25 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
Python正则表达式完全指南
2017/05/25 Python
python2.7安装图文教程
2018/03/13 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
两道JAVA笔试题
2016/09/14 面试题
自荐信的基本格式
2014/02/22 职场文书
企业授权委托书范本
2014/04/02 职场文书
小摄影师教学反思
2014/04/27 职场文书
李强感恩观后感
2015/06/17 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang