使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 相关文章推荐
IE中createElement需要注意的一个问题
Jul 13 Javascript
javascript中的delete使用详解
Apr 11 Javascript
简易js代码实现计算器操作
Apr 15 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
JS获取几种URL地址的方法小结
Feb 26 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
Mar 20 Javascript
node.js操作mongodb学习小结
Apr 25 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
跟我学习javascript的全局变量
Nov 16 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
Vue数据绑定简析小结
May 07 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 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 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
深入理解python中的select模块
2017/04/23 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
python读写csv文件的方法
2019/08/13 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
大门门卫岗位职责
2013/11/30 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
安全演讲稿大全
2014/05/09 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
英文升职感谢信
2015/01/23 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
手写实现JS中的new
2021/11/07 Javascript