天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

下面一段程序就是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 );
})
很簡單很精巧吧?

JavaScript技術JSON JQUERY模板實現(xiàn)說明,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 羞羞影院午夜男女爽爽影院网站 | 无码人妻丰满熟妇区五十路久久 | 国产乱妇乱子在线播视频播放网站 | 99视频精品全部免费 在线 | 蜜芽在线播放免费人成日韩视频 | 国产免费看黄的私人影院 | 日本经典片免费看 | 操老太太的逼 | 久久这里只有精品1 | 国产亚洲精品视频亚洲香蕉视 | 伊人网综合网 | 人成片在线观看亚洲无遮拦 | 少女10声大哥喊退色狼 | 中国大陆一级毛片免费 | 黄页网址大全免费观看 | 嗯啊…嗯np男男双性总受 | 性生生活大片又黄又 | 日日操日日射 | 黑人猛挺进小莹的体内视频 | 精品久久免费视频 | 国产欧美第一页 | 亚洲欧美日韩另类精品一区二区三区 | 激情内射亚州一区二区三区爱妻 | 欧美群交XXXCOM | 欧美日韩国产码在线 | 男男高H啪肉Np文多攻多一受 | 果冻传媒在线播放 免费观看 | 色翁荡息又大又硬又粗又爽电影 | 国产交换丝雨巅峰 | 国产精品热久久高潮AV袁孑怡 | 97成人在线 | 国产欧美日韩精品a在线观看高清 | 精彩国产萝视频在线 | 97亚洲狠狠色综合久久位 | 亚洲精品久久久久69影院 | 囯产精品久久久久久久久蜜桃 | 另类欧美尿交 | 国产偷抇久久精品A片蜜臀AV | 久久视频这里只精品6国产 久久视频在线视频观品15 | 国产精品九九久久精品视 | 久久毛片免费看一区二区三区 |