jQuery模板提案(4)
作者:dishuipiaoxiang 来源:Denis'Blog 发布时间:2010-03-30 18:27:00
ASP.NET Ajax 模板
在 ASP.NET的Ajax库支持客户端模板。这个库支持很多先进的功能:
伪变量--你可以在模板中用一组诸如代表模板实例当前索引的$index特别变量;
动态模板-- 在渲染JavaScript对象数组时,你可以动态的改变模板;
动态占位--在渲染JavaScript对象数组时,你可以动态的更改模板的占位符。
例如,您可以使用下面的代码在模板中渲染产品列表:
var products = [
{ name: "Laptop", price: 788.67 },
{ name: "Comb", price: 2.50 },
{ name: "Pencil", price: 1.99 }
];
Sys.require([Sys.components.dataView], function () {
$("#products").dataView(
{
data: products
});
});
DataView()方法用来在一个模板中显示系列产品。模板包含在名为product的div元素中。
<div id="products" class="sys-template"> <div id="{{ $id('product') }}"> Product Name: {{ name }} <br /> Product Price: {{ formatPrice(price) }} </div> </div>
请注意,ASP.NET Ajax模板只是一个dom元素。因为模板仅仅是一个DOM元素,模板就不需要包裹在SCRIPT或TEXTARE或HTML注释中。在这种情况下,一个DIV元素为每一个产品创建一个新实例。
此外,请注意$id()伪变量。$id()解决模板和元素id的有关问题。如果你为一个模板添加一个带有id的元素,模板用来收集选项,结果是将出现重复id。$id()伪变量为每一个模板实例生成唯一的ids,使你避免了这个问题。
ASP.NET Ajax还支持一种所谓的动态模板。想想以下,你已经为每一个新产品创建了一个模板,通常的产品模板看起来是这样的:
<!-- New template -->
<div id="newTemplate" class="sys-template">
<div>
<img src="new.gif" />
Product Name: {{ name }}
<br />
Product Price: {{ formatPrice(price) }}
</div>
</div>
<!-- Normal template -->
<div id="normalTemplate" class="sys-template">
<div>
Product Name: {{ name }}
<br />
Product Price: {{ formatPrice(price) }}
</div>
</div>
这两个模板其实是一样的,除非新的模板显示一个新的图像。
你可以在每一个模板显示之前创建一个itemRendering事件处理程序。在该程序中,你可以指定用来显示数据项的模板。
function itemRendering(dataView, args) {
// Get the current data item
var product = args.get_dataItem();
// Set the template dynamically
if (product.dateCreated.getFullYear() == 2010) {
args.set_itemTemplate("#newTemplate");
} else {
args.set_itemTemplate("#normalTemplate");
}
}
上面的代码使用两个模板中的一个来显示产品。如果产品是新的(创建于2010年)用newTemplate来显示,否则用normalTemplate模板。
ASP.NET Ajax还支持一种所谓的动态占位。动态占位使你可以在文档的不用位置显示不同项。例如,你可能希望你所有的新产品在你文档中的“新产品”区域显示:
<h1>New Products</h1>
<div id="newPlaceholder"></div>
<h1>All Products</h1>
<div id="normalTemplate" class="sys-template">
<div>
Product Name: {{ name }}
<br />
Product Price: {{ formatPrice(price) }}
</div>
</div>
请注意名为newPlaceholder的div元素。你希望所有新产品都出现在这里。
这里是你如何编写itemRendering处理程序在新的占位符中放置新产品--创建于2010的产品。
function itemRendering(dataView, args) {
// Get the current data item
var product = args.get_dataItem();
// Set the template dynamically
if (product.dateCreated.getFullYear() == 2010) {
args.set_itemPlaceholder("#newPlaceholder");
}
}


猜你喜欢
- 什么是反射大多数时候,Go中的变量,类型和函数非常简单直接。当需要一个类型、变量或者是函数时,可以直接定义它们:type Foo struc
- 目录1.自定义行索引2. 按普通索引选择数据2.1 按普通索引选择单行数据2.2 按行索引选择多行数据3.按位置索引选择数据3.2 按位置索
- 1、检测指定路径下所有文件所占用内存import osdef check_memory(path, style='M'):
- 1.命名规范1.库名、表名、字段名必须使用小写字母,并采用下划线分割。a)MySQL有配置参数lower_case_table_names,
- 举一个例子,我现在有一些新闻信息,它包括这些字段;新闻ID,新闻Name,新闻ShortIntro,新闻Detail,新闻PublishTi
- SQL Server具有强大的复制功能,除了将数据和数据库对象从一个数据库复制并准确分发的另一个数据库中,还要实行数据库之间的同步。SQL
- 电脑环境:windows7 64位 python3.7问题:在PyCharm中,使用setting下
- SQLserver 2000中出现“指定的服务并未以已安装的服务存在" 解决方案一、将计算机名改成大写。二、将sql server
- MYSQL有不同类型的日志文件(各自存储了不同类型的日志),从它们当中可以查询到MYSQL里都做了些什么,对于MYSQL的管理工作,这些日志
- 前言功能新增学生显示学生查找学生删除学生存到文档创建入口函数在入口函数中,可以先打印一个菜单,用菜单来进行交互。def menu(): &n
- 数据科学领域日常使用 Python 处理大规模数据集的时候经常需要使用到合并、链接的方式进行数据集的整合,其中应用的数据类型包括 Serie
- 前言本篇博客主要解决在使用pandas绘制图像并保存时,由于标签太长,导致坐标轴上的标签显示不全的问题。刚遇到问题时调整了一下图片大小,然鹅
- 3*3卷积核与2*5卷积核对神经元大小的设置#这里kerner_size = 2*5class CONV_NET(torch.nn.Modu
- 最近在内部讨论关于”完美三栏”的话题,看到一篇”In Search of the Holy Grail“,相当的好.故此翻译之.In Sea
- Python自动化脚本登录校园网所需工具:python编译环境(博主使用的pycharm作演示,其实在cmd也可以操作!)selenium自
- 只要你的Web开发知识不是语文老师教的,那么你应该已经知道一个合格的开发者应该永远抱着怀疑的眼光看用户提交的数据。你不仅需要在前端通过表单或
- 本文的目标是将表1论文及出版物与表2出版物及其指标进行匹配。利用pandas的merge函数实现表的左外连接。左外连接即左表的外连接,左表保
- 功能:为连连看游戏提供连接算法 说明:模块中包含一个Point类,该类是游戏的基本单元“点”,该类包含属性:x,y,value。 其中x,y
- 一、开发接口的作用1、mock接口:模拟一些接口。有一些有关联的接口,在别的接口没有开发好的时候,需要用这个接口,就可以写一个假接口,返回想
- import pandas as pdimport numpy as np一、时间类型及其在python中对应的类型时间戳–timestam