最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JSON JQUERY模板實現說明

 更新時間:2010年07月03日 00:07:13   作者:  
用JSON從服務器端返回數據已是大家公認的標準,因為它短小精悍,使用方便.
可是在客戶端再現數據也是一個不小的問題,用javascript處理經常會遇到很繁瑣的事.尤其大批量具有相同結構的數據,例如表格,處理方式不盡如意.如果能有一個模板控件,就像服務器端asp.net Gridview或者repeater一樣的東西就好很多.最近看到一個非常優(yōu)秀的解決方案,讓我在使用方便的同時不得不為作者的精巧設計而作一番感嘆.該解決方案用了區(qū)區(qū)二十幾行代碼,實現了別人要用幾十甚至上百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 &rsquo; 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("\\'")
.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 );
})

很簡單很精巧吧?

相關文章

最新評論

安图县| 施甸县| 安徽省| 浮山县| 习水县| 资讯 | 泗水县| 油尖旺区| 英德市| 武清区| 南陵县| 平邑县| 临高县| 达日县| 广宗县| 盐山县| 淄博市| 西平县| 云霄县| 达尔| 桦川县| 甘孜县| 罗甸县| 贡嘎县| 甘泉县| 盐城市| 建瓯市| 阳泉市| 蒲江县| 利辛县| 全南县| 麻阳| 江北区| 河南省| 宁武县| 萨嘎县| 威海市| 威宁| 贵州省| 福清市| 泊头市|