使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 页面载入进度条实现代码
Feb 08 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
Jun 25 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
分享12个非常实用的JavaScript小技巧
May 11 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 Javascript
详解如何在angular2中获取节点
Nov 23 Javascript
浅谈vue.js导入css库(elementUi)的方法
Mar 09 Javascript
ES6 中可以提升幸福度的小功能
Aug 06 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
Oct 20 Javascript
浅谈JS的原型和继承
May 08 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
Zend引擎的发展 [15]
2006/10/09 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
javascript实现文件拖拽事件
2018/03/29 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
js 函数性能比较方法
2020/08/24 Javascript
python进阶教程之异常处理
2014/08/30 Python
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python 元组的使用方法
2020/06/09 Python
python 5个实用的技巧
2020/09/27 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
群众路线学习笔记范文
2014/11/06 职场文书
化工厂员工工作总结
2015/10/15 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers