麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開發(fā) > JS > 正文

JSON JQUERY模板實(shí)現(xiàn)說明

2024-09-06 12:45:31
字體:
供稿:網(wǎng)友
可是在客戶端再現(xiàn)數(shù)據(jù)也是一個(gè)不小的問題,用javascript處理經(jīng)常會(huì)遇到很繁瑣的事.尤其大批量具有相同結(jié)構(gòu)的數(shù)據(jù),例如表格,處理方式不盡如意.如果能有一個(gè)模板控件,就像服務(wù)器端asp.net Gridview或者repeater一樣的東西就好很多.最近看到一個(gè)非常優(yōu)秀的解決方案,讓我在使用方便的同時(shí)不得不為作者的精巧設(shè)計(jì)而作一番感嘆.該解決方案用了區(qū)區(qū)二十幾行代碼,實(shí)現(xiàn)了別人要用幾十甚至上百K的js庫(kù)所做的工作.它就是John Resig 的 Microtemplating engine.大師Rick Strahl有一篇文章專門對(duì)此作了詳細(xì)講述(Client Templating with Jquery).我在這里把最核心部分提取出來以方便國(guó)人學(xué)習(xí)。

下面一段程序就是microtemplating engine.

代碼如下:
var _tmplCache = {}
this.parseTemplate = function(str, data) {
/// <summary>
/// Client side template parser that uses <#= #> and <# code #> expressions.
/// and # # code blocks for template expansion.
/// NOTE: chokes on single quotes in the document in some situations
/// use ’ for literals in text and avoid any single quote
/// attribute delimiters.
/// </summary>
/// <param name="str" type="string">The text of the template to expand</param>
/// <param name="data" type="var">
/// Any data that is to be merged. Pass an object and
/// that object's properties are visible as variables.
/// </param>
/// <returns type="string" />
var err = "";
try {
var func = _tmplCache[str];
if (!func) {
var strFunc =
"var p=[],print=function(){p.push.apply(p,arguments);};" +
"with(obj){p.push('" +

str.replace(/[/r/t/n]/g, " ")
.replace(/'(?=[^#]*#>)/g, "/t")
.split("'").join("http://'")
.split("/t").join("'")
.replace(/<#=(.+?)#>/g, "',$1,'")
.split("<#").join("');")
.split("#>").join("p.push('")
+ "');}return p.join('');";

//alert(strFunc);
func = new Function("obj", strFunc);
_tmplCache[str] = func;
}
return func(data);
} catch (e) { err = e.message; }
return "< # ERROR: " + err.htmlEncode() + " # >";
}

如何使用:
代碼如下:parseTemplate($("#ItemTemplate").html(),{ name: "rick", address: { street: "32 kaiea", city: "paia"} } );

上面程序所用的模板:
代碼如下:<script id="ItemTemplate" type="text/html"><div><div><#= name #></div><div><#= address.street #></div> </div></script>

如果想用循環(huán):
代碼如下:$.each(dataarray,function(index,dataItem){
parseTemplate($("#ItemTemplate").html(), dataItem );
})
很簡(jiǎn)單很精巧吧?
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美精品一区二区三区在线 | 性生活视频一级 | 黄色羞羞视频在线观看 | 黄色大片免费看 | 圆产精品久久久久久久久久久 | 日韩视频一区二区三区在线观看 | 久久久久久久一区二区三区 | 在线免费观看日韩视频 | 国产九九在线视频 | 亚洲网在线观看 | 成人福利视频 | 久草免费新视频 | 毛片在线免费观看网址 | 精品人成| 国产精品一区二区羞羞答答 | 国产免费视频一区二区裸体 | 国产精品视频一区二区三区四区国 | 国产精品久久在线观看 | 手机免费看一级片 | 国产毛毛片一区二区三区四区 | 成人羞羞国产免费游戏 | 国产精品久久久久永久免费 | 欧美伦理一区二区 | 欧美爱爱一区二区 | hdhdhd69ⅹxxx黑人 | 深夜免费视频 | 一区二区久久精品66国产精品 | 欧美a在线 | 国产精品高潮视频 | 中文字幕欧美视频 | 性欧美视频在线观看 | 国产成人av免费看 | 色综合精品 | 精品国产1区2区3区 免费国产 | 日韩字幕在线观看 | 成人在线视频网 | av免费大全 | 91精品一区二区综合在线 | 日韩黄色片免费看 | 一级黄色电影网站 | 久久精品欧美视频 |