ASP.NET Ajax 模板
在 ASP.NET的Ajax庫支持客戶端模板。這個(gè)庫支持很多先進(jìn)的功能:
- 偽變量--你可以在模板中用一組諸如代表模板實(shí)例當(dāng)前索引的$index特別變量;
- 動(dòng)態(tài)模板-- 在渲染JavaScript對(duì)象數(shù)組時(shí),你可以動(dòng)態(tài)的改變模板;
- 動(dòng)態(tài)占位--在渲染JavaScript對(duì)象數(shù)組時(shí),你可以動(dòng)態(tài)的更改模板的占位符。
例如,您可以使用下面的代碼在模板中渲染產(chǎn)品列表:
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()方法用來在一個(gè)模板中顯示系列產(chǎn)品。模板包含在名為product的div元素中。
<div id="products" class="sys-template"> <div id="{{ $id('product') }}"> Product Name: {{ name }} <br /> Product Price: {{ formatPrice(price) }} </div> </div>
請(qǐng)注意,ASP.NET Ajax模板只是一個(gè)dom元素。因?yàn)槟0鍍H僅是一個(gè)DOM元素,模板就不需要包裹在SCRIPT或TEXTARE或HTML注釋中。在這種情況下,一個(gè)DIV元素為每一個(gè)產(chǎn)品創(chuàng)建一個(gè)新實(shí)例。
此外,請(qǐng)注意$id()偽變量。$id()解決模板和元素id的有關(guān)問題。如果你為一個(gè)模板添加一個(gè)帶有id的元素,模板用來收集選項(xiàng),結(jié)果是將出現(xiàn)重復(fù)id。$id()偽變量為每一個(gè)模板實(shí)例生成唯一的ids,使你避免了這個(gè)問題。
ASP.NET Ajax還支持一種所謂的動(dòng)態(tài)模板。想想以下,你已經(jīng)為每一個(gè)新產(chǎn)品創(chuàng)建了一個(gè)模板,通常的產(chǎn)品模板看起來是這樣的:
<!-- 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>
這兩個(gè)模板其實(shí)是一樣的,除非新的模板顯示一個(gè)新的圖像。
你可以在每一個(gè)模板顯示之前創(chuàng)建一個(gè)itemRendering事件處理程序。在該程序中,你可以指定用來顯示數(shù)據(jù)項(xiàng)的模板。
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"); } }
上面的代碼使用兩個(gè)模板中的一個(gè)來顯示產(chǎn)品。如果產(chǎn)品是新的(創(chuàng)建于2010年)用newTemplate來顯示,否則用normalTemplate模板。
ASP.NET Ajax還支持一種所謂的動(dòng)態(tài)占位。動(dòng)態(tài)占位使你可以在文檔的不用位置顯示不同項(xiàng)。例如,你可能希望你所有的新產(chǎn)品在你文檔中的“新產(chǎn)品”區(qū)域顯示:
<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>
請(qǐng)注意名為newPlaceholder的div元素。你希望所有新產(chǎn)品都出現(xiàn)在這里。
這里是你如何編寫itemRendering處理程序在新的占位符中放置新產(chǎn)品--創(chuàng)建于2010的產(chǎn)品。
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"); } }
出處:
責(zé)任編輯:moby
上一頁 jQuery模板提案 [4] 下一頁 jQuery模板提案 [6]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|