使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的tab切换 js原理
Apr 01 Javascript
jQuery写fadeTo示例代码
Feb 21 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
jQuery异步获取json数据方法汇总
Dec 22 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
javascript函数命名的三种方式及区别介绍
Mar 22 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
jQuery实现菜单栏导航效果
Aug 15 jQuery
JS数组求和的常用方法实例小结
Jan 07 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
JavaScript原型继承和原型链原理详解
Feb 04 Javascript
Vue实现点击箭头上下移动效果
Jun 11 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python__new__内置静态方法使用解析
2020/01/07 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
python zip()函数的使用示例
2020/09/23 Python
python 生成器需注意的小问题
2020/09/29 Python
施工安全责任书范本
2014/07/24 职场文书
教师工作证明范本
2015/06/12 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js