jQuery模板提案(9)
作者:dishuipiaoxiang 来源:Denis'Blog 发布时间:2010-03-30 18:27:00
标签:jquery,模板,Javascript,对象
代码块
除了表达式,你可以在模板中插入代码执行自定义逻辑、条件或循环。代码块用{%....%}语法来分隔(没有=)。
示例
这个例子显示系列产品的name,如果有可用的“specials”则显示。
<script type="text/html" id="tmp1">
<li>
{%= name %}
{% if (specials.length) { %}
<ul>
{% for (var i = 0, l = specials.length; i < l; i++) { %}
<li>{%= specials[i].details %}</li>
{% } %}
</ul>
{% } %}
</li>
</script>
上下文
在模板中,你可以使用一个名叫$context 的特殊变量,这与提案后面要描述的rendering和rendered回调是同一个对象。$context具有以下属性:
参数 | 描述 |
---|---|
data | 传递给render()和append()函数的数组或对象 |
dataItem | 但是,这个放到with() 块中,使得数据的每一个字段可以直接使用。例如,如果数据为[{name:"dave"},{name:"bob"}] ,那么{%= name } 就可以使用。但是要注意,指向一个不存在的字段将是无效的。数据为[{name:"dave"},{firstname:"bob"}] ,那么第二个表达式“name”将无效。 |
index | 传递给模板的当前数据项在数组中的索引。如果是一个对象,索引为0 |
options | 传递给模板的选项参数。这个提供了给模板传递额外参数的方法。 |
你对$context 变量的修改在模板中将保持一致。例如,你可以在render()函数中给$context 变量添加计算字段。
function rendering(context) {
context.tax = context.dataItem.price * 0.23;
}
你可以在模板中使用tax计算字段,保持模板简单,避免需要调试的内嵌表达式。
<script type="text/html" id="tmp1">
The product with tax costs {%= $context.tax %}
</script>
你可以使用$context.options变量指向任何需要传递给render()和append()函数的选项。下面的示例演示了如何根据传递给append()函数的showSalePrice 参数值来显示正常价格或零售价格。
<script type="text/javascript">
jQuery(function() {
var products = [
{ name: "Product 1", price: 12.99, salePrice: 10.99 },
{ name: "Product 2", price: 9.99, salePrice: 7.99 },
{ name: "Product 3", price: 35.59, salePrice: 33.59 }
];
$("ul").append("#template", products, { showSalePrice: true });
});
</script>
<script id="template" type="text/html">
<li>
{%= name %} -
{%= $context.options.showSalePrice ? salePrice : price %}
</li>
</script>
<ul></ul>
注意如何在模板中根据$ context.options.showSalePrice属性来显示正常价格或零售价格。


猜你喜欢
- 1、我的第一个个人主页一打开就是一张很眩的图片,图片上有个“进入”,点击后才算真正看到我的主页。现在回想起来那个时候这样做,大概是很想迅速展
- 有史以来最牛逼的绘图工具,没有之一plotly是现代平台的敏捷商业智能和数据科学库,它作为一款开源的绘图库,可以应用于Python、R、MA
- 目录现象根因分析getLastPacketReceivedTimeMs()方法调用时机解决方案现象应用升级MySQL驱动8.0后,在并发量较
- 在面向对象的理论中,有两个核心的概念:类和实例。类可以看成是一个模板,实例就是根据这个模板创建出来的对象。但在 Python 里面,类和实例
- 初学python,看来零零碎碎的格式化文本的方法,总结一下python中格式化文本的方法。使用不当的地欢迎指出谢谢。1、首先看使用%格式化文
- 这一篇笔记将介绍 session 相关的内容,包括如何在系统中使用 session,以及利用 session 实现登录认证的功能。1、ses
- 问题你想根据一组语法规则解析文本并执行命令,或者构造一个代表输入的抽象语法树。 如果语法非常简单,你可以不去使用一些框架,而是自己写这个解析
- 1、将一个字典输入:该字典必须满足:value是一个list类型的元素,且每一个key对应的value长度都相同:(以该字典的key为col
- numpy中有一个掩码数组的概念,需要通过子模块numpy.ma来创建,基本的创建方式如下>>> import numpy
- 问题背景:日常对Sql Server 2005关系数据库进行操作时,有时对数据库(如:Sharepoint网站配置数据库名Sharepoin
- 前言默认情况下SQL SERVER的安装路径与数据库的默认存放路径是在C盘的--这就很尴尬。平时又不注意,有天发现C盘的剩余空间比较吃紧了,
- 前言lambda是表达式,用于创建匿名函数,可以和filter、map、reduce配合使用。本文环境Python3.7。一、lambda表
- 本文实例讲述了PHP实现绘制二叉树图形显示功能。分享给大家供大家参考,具体如下:前言:最近老师布置了一个作业:理解并实现平衡二叉树和红黑树,
- 一、在控制器中引用:use cache;二、基本方法及使用1、put() 键 值 有效时间(分钟)Cache::put('key1&
- 1.需求说明记录一下项目对用户 UGC 文本进行字数限制的具体实现。不同的产品,出于种种原因,一般都会对用户输入的文本内容做字数限制。出于产
- 前言玩博客一个多月了,渐渐发现了一些有意思的事,经常会有人用同样的评论到处刷,不知道是为了加没什么用的积分,还是纯粹为了表达楼主好人。那么问
- 1: os.listdir(path) //path为目录 功能相当于在path目录下执行dir命令,返回为list类型 print os.
- Python有自己内置的标准GUI库--Tkinter,只要安装好Python就可以调用。今天学习到了图形界面设计的问题,刚开始就卡住了。为
- django-debug-toolbar介绍django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试
- 本文实例讲述了python实现将pvr格式转换成pvr.ccz的方法。分享给大家供大家参考。具体实现方法如下:import zlibimpo