ajax项目中使用模板
2009-12-16 17:30
155 查看
以前写过一个javascript模板,也是为了提高开发效率,相应的也会牺牲一些执行效率,当然这种模板的使用也是要看情况来定的,并不是任何情况下它都能显著的效果。我个人之应用在对页面上已有的html文档插入数据时才使用的,如果html也是动态创建的,完全可以使用innerHTML。以下是代码:
代码
使用方法如下:
首先要为你准备插入数据的html文档的元素添加一个template属性,然后随便定义一个名称,我们暂且称呼这个名称为容器名,容器名是调用template.insert()方法时的一个重要参数。
template.insert方法有3个参数template.insert(json数据,容器名,[添加了容器名元素的标签名称])
第一个参是要插入的数据,一般是由服务器返回的json格式。第二个参数就是上面我们提到的那个template定义的属性。第三个参数是可选的,就是定义了template属性的那个元素的标签名,这个参数就是为了能加快查找速度。接着只要把json数据对应的键放到你要插入的位置就可以了。像这样
那个name位置插入的就是name:"张三"和name:"李四"那两条数据,我们也看到了上面的json数据时这样的 json=[{},{}]; 有两条数据需要插入,遇到这种情况代码会自动循环输出插入了template属性的html代码块,所以"张三"和"李四"都会被输出。
正如上面提到的那样有循环体的地方我们都需要插入一个template属性,比如这里
这里message下的a属性实际上也是一个循环体,那么就在html中要循环的地方这样设置
由于a的循环体内是纯数组,所以{}内为空就可以,还要注意的是这个li设置的template属性和最初设置的template属性不同的是,它不可以随意命名,而必须表明它在数据当中的位置,因为它在json数据当中的位置是[message.a[]],所以要这样写 template="message.a"。
第一次用可能会觉得繁琐,不太习惯,但用惯了会很快的,只要在html上设置好,其他的就不用管了,数据循环都是自动的。当然这样造成的后果就是行为层和结构层的耦合,但有时候考虑到开发效率,就要看自己平衡利弊了。还有一个问题就是ie下无法对table内使用这个模板,因为ie table的innerHTML是只读的,而这个程序的核心就是对innerHTML进行操作。暂时还没去解决这个问题,希望这个模板能对大家有所帮助。
代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript" src="template.js"></script> <script type="text/javascript"> var json=[{ name:"张三", sex:"男", age:{value:25}, message:{a:["第一条","第二条","第三条","第四条"]} },{ name:"李四", sex:"女", age:{value:12}, message:{a:["第1条","第2条","第3条","第4条"]} }] window.onload=function(){ template.insert(json,"info","div"); } </script> </head> <body> <div template="info"> <div><span>姓名:</span><!--{name}--></div> <div><span>性别:</span><!--{sex}--></div> <div><span>年龄:</span><!--{age.value}--></div> <div>留言: <ul> <li template="message.a"><!--{}--></li> </ul> </div> </div> </body> </html>
使用方法如下:
首先要为你准备插入数据的html文档的元素添加一个template属性,然后随便定义一个名称,我们暂且称呼这个名称为容器名,容器名是调用template.insert()方法时的一个重要参数。
template.insert方法有3个参数template.insert(json数据,容器名,[添加了容器名元素的标签名称])
第一个参是要插入的数据,一般是由服务器返回的json格式。第二个参数就是上面我们提到的那个template定义的属性。第三个参数是可选的,就是定义了template属性的那个元素的标签名,这个参数就是为了能加快查找速度。接着只要把json数据对应的键放到你要插入的位置就可以了。像这样
<div><span>姓名:</span><!--{name}--></div>
那个name位置插入的就是name:"张三"和name:"李四"那两条数据,我们也看到了上面的json数据时这样的 json=[{},{}]; 有两条数据需要插入,遇到这种情况代码会自动循环输出插入了template属性的html代码块,所以"张三"和"李四"都会被输出。
正如上面提到的那样有循环体的地方我们都需要插入一个template属性,比如这里
message:{a:["第1条","第2条","第3条","第4条"]}
这里message下的a属性实际上也是一个循环体,那么就在html中要循环的地方这样设置
<li template="message.a"><!--{}--></li>
由于a的循环体内是纯数组,所以{}内为空就可以,还要注意的是这个li设置的template属性和最初设置的template属性不同的是,它不可以随意命名,而必须表明它在数据当中的位置,因为它在json数据当中的位置是[message.a[]],所以要这样写 template="message.a"。
第一次用可能会觉得繁琐,不太习惯,但用惯了会很快的,只要在html上设置好,其他的就不用管了,数据循环都是自动的。当然这样造成的后果就是行为层和结构层的耦合,但有时候考虑到开发效率,就要看自己平衡利弊了。还有一个问题就是ie下无法对table内使用这个模板,因为ie table的innerHTML是只读的,而这个程序的核心就是对innerHTML进行操作。暂时还没去解决这个问题,希望这个模板能对大家有所帮助。
相关文章推荐
- hadoop web项目使用ajax监控mapreduce过程
- J2EE项目系列(四)--SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis)(3)Ajax使用详解(级联列表)以及企业级报表Excel导入导出实现
- node+express 项目中ejs模板的使用
- 使用Maven模板创建项目
- ASP.NET AJAX 宝典系列(2) 在Visual Studio 2005 Web Application 项目中使用AJAX
- 在已建项目中使用AJAX.net
- 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
- 商城项目-使用json模板实现带分类的产品规格信息存储及展示
- tfs2013 过程模板 使用团队项目内容,选择过程指南
- 项目中使用的ajax异步读取数据结构设计
- Maven2 根据项目生成模版项目,并使用该模板批量创建工程
- 使用python + tornado 做项目demo演示模板
- ThinkPHP第七天(F函数使用,项目分组配置,项目分组模板文件放置规则配置)
- [置顶] ajax请求到后台数据,前台不用拼接字符串append追加HTML标签,一样显示到页面 (使用空模板)
- 【翻译】Microsoft Ajax Minifier 快速使用指南(与VS集成使用) 编译后直接压缩项目的JS或CSS文件
- maven 学习---使用Maven模板创建项目
- Team System:使用过程模板简化团队项目
- 项目中使用的ajax代码_:觉得还好
- 使用VS2010的Database 项目模板统一管理数据库对象
- 项目使用excel模板写入图片总结