Jquery 模板数据绑定插件的使用方法详解_Javascript教程-查字典教程网
Jquery 模板数据绑定插件的使用方法详解
Jquery 模板数据绑定插件的使用方法详解
发布时间:2016-12-30 来源:查字典编辑
摘要:1绑定后台数据到指定模板(无嵌套,内容均为后台数据原始信息,前台绑定)以通话记录页为例:首先指定目标容器:复制代码代码如下:被叫号码主叫号码...

1 绑定后台数据到指定模板(无嵌套,内容均为后台数据原始信息,前台绑定)

以通话记录页为例:

首先指定目标容器:

复制代码 代码如下:

<dl id="gvRecCalls">

<dd>

<p></p>

<p>被叫号码</p>

<p>主叫号码</p>

<p>起始时间</p>

<p id="pAmount">金额($)</p>

<p>时长</p>

<p>区域</p>

<p name="pCDRHeader">CDR ID</p>

<p name="pSelectCbHeader"></p>

<p name="pDeleteCbHeader"></p>

</dd>

</dl>

其次指定模板数据:

复制代码 代码如下:

<dl id="RecCallsTemplate" >

<dd >

<p>

<bicon_call_in' : 'icon_call_out'}" ></b>

</p>

<span><span>${CalledStationId}</span></span>

<span>${CallingStationId.substr(CallingStationId.indexOf("*") + 1)}</span>

<span id="Start_time" >${StartTime}</span>

<span>${CSSCommonJS.ChangeDecimal(Revenue,3)}</span>

<span><span>${CSSCommonJS.GetTimeFormatString(RevenueTime)}</span></span>

<span>${Location} </span>

<span name="pCDRHeader" >${CdrId}</span>

<p name="pSelectCbHeader">

<input type="checkbox" name="cbSelect" /></p>

<span name="pDeleteCbHeader">

<button id="btDelete"><b>删除</b></button>

</span>

</dd>

</dl>

后台进行绑定:

<script src="Scripts/jquery.tmpl.js" type="text/javascript"></script>

function RenderTemplatefunction(container, template, data) {

$(template).tmpl(data).appendTo(container); //原始方法

};

CSSCommonJS.RenderTemplatefunction($(t.panelID).find("#gvRecCalls"), $(t.panelID).find("#RecCallsTemplate"), result.CdrData);

2 指定模板中无通配符,后台填充数据(许愿墙实现)

前台:

复制代码 代码如下:

<div id="content">

<>

<div id="ItemList">

</div>

<>

</div>

<div id="ItemTemplate">

<dd>

<div>

<div>

<div>

<a href="#" id="btnTitle"><span id="item_title"></span></a>

</div>

<div>

</div>

<div id="item_person">

</div>

<div id="item_date">

</div>

</div>

</div>

</dd>

</div>

后台进行取数据绑定,绑事件等。

复制代码 代码如下:

//获取许愿墙数据

$.get("control/controler.ashx?t=" + new Date(), { type: 'heartwall', date: new Date() }, function (data) {

var jsonData = eval("(" + data + ")");

//alert(jsonData.table[1].title);

RenderTemplatefunction($("#ItemList"), $("#ItemTemplate"), jsonData.table);

$("#ItemList").children("dd").each(function (index) {

var tTr = this;

var selectedItem = $.tmplItem(this);

var tmp_title = $(tTr).find("#item_title");

var tmp_person = $(tTr).find("#item_person");

var tmp_date = $(tTr).find("#item_date");

var btnTitle = $(tTr).find("#btnTitle");

var bgNumber = "it" + Math.floor(Math.random() * 10 + 9) + ".jpg"; //1-10的随机数

var bg = $(tTr).find(".bg");

bg.css('background-image', "url('img/bg/" + bgNumber + "')");

var getRandomColor = function () {

return (function (m, s, c) {

return (c ? arguments.callee(m, s, c - 1) : '#') +

s[m.floor(m.random() * 16)]

})(Math, '0123456789abcdef', 5)

}

var Color = getRandomColor();

$(tTr).find("#item_title").css('color', Color.toString());

//绑定数据

tmp_title.html(selectedItem.data.title);

tmp_person.html(selectedItem.data.pubName);

tmp_date.html(selectedItem.data.addDate.toString().split(' ')[0].replaceAll('/', '-').toString());

btnTitle.click(function () {

var heart_date = "";

if (selectedItem.data.beginDate.toString() == selectedItem.data.endDate.toString()) {

heart_date = selectedItem.data.beginDate.toString().split(' ')[0].replaceAll('/', '-');

}

else {

heart_date = selectedItem.data.beginDate.toString().split(' ')[0].replaceAll('/', '-') + " 至 " +

selectedItem.data.endDate.toString().split(' ')[0].replaceAll('/', '-');

}

$("#heart_title").html(selectedItem.data.title);

$("#heart_content").html(selectedItem.data.content);

$("#heart_date").html(heart_date);

$("#heart_person").html(selectedItem.data.participator);

$("#heart_contact").html(selectedItem.data.contact);

$("#heatr_puber").html(selectedItem.data.pubName);

//ShowBox

this.href = "#heartInfo_content";

$(this).addClass("heartInfo_inline");

$("#heartInfo_content").show();

showDialog();

});

});

});

3 嵌套绑定 (目标数据源中含有多个数组,分别绑定到对应的子模板)

账单页面为例:

前台:

复制代码 代码如下:

目标容器

<span id="ProductBilling">

</span>

外层模板

<div id="ProductBillingTemplate">

<dl>

<dd>

<p></p>

<span><b id="bComboName"></b> <b id="bTel"></b></span>

</dd>

{{tmpl(BillTransactions) "#BillingDetailDateTemplate"}}

<span> {{tmpl(RebateInstances) "#BillingDetailDateTemplate"}}</span> 固定写法,第一个参数为数据源中的第二个数组,第二个为使用的子模板

{{tmpl(TopUpDetails) "#BillingDetailDateTemplate"}}

</dl>

</div>

子模板

<div id="BillingDetailDateTemplate">

<dd>

<p></p>

<p>${(<span>typeof(Name) == "undefined" ? Type : Name</span>) + ":"}</p> <span>

子模板是三个数据源的公共模板,可能属性的名称会有不同,需要判断</span>

<span id="spamount" title = "{{= CreateDate }}">${CSSCommonJS.ChangeDecimal((typeof(InitialAmount) == "undefined" ?

Amount : InitialAmount), 2)}</span>

<span id="spdescription">${Description}</span>

</dd>

</div>

后台绑定

复制代码 代码如下:

CSSCommonJS.RenderTemplatefunction($(t.panelID).find("#ProductBilling"), $(t.panelID).find("#ProductBillingTemplate"), billingDetail);

//

$(t.panelID).find("#ProductBilling").children("dl").each(function (index) {

var tTr = this;

var selectedItem = $.tmplItem(this);

var bComboName = $(tTr).find("#bComboName");

var bTel = $(tTr).find("#bTel");

var n = selectedItem.data;

var curAcct = CSSCommonJS.GetCurrentUser(t.masterUser, n.AccountId); // n.BusinessAccountId);

var curpstn = "";

if (curAcct.AccountType == CSSAccountType.BB) {

if (curAcct.DID) {

if (curAcct.CountryCode == "1") {

curpstn = "(Tel:" + CSSCommonJS.FormatUSCAPhone(curAcct.DID) + ")";

}

else {

curpstn = "(Tel:" + curAcct.DID + ")";

}

}

else if (curAcct.BBNumber) {

curpstn = "(" + curAcct.BBNumber + ")";

}

}

else if (curAcct.AccountType == CSSAccountType.HY) {

curpstn = "(" + curAcct.HYNumber + ")";

}

else if (curAcct.AccountType == CSSAccountType.DSL) {

curpstn = "(" + curAcct.DSLNumber + ")";

}

bComboName.html(curAcct.ComboName);

bTel.html(curpstn);

if ((n.BillTransactions.length + n.RebateInstances.length + n.TopUpDetails.length) == 0) {

$(tTr).hide();

}

$(tTr).find(".border_none_special").each(function (spindex) {

var tdd = this;

var selectedItem = $.tmplItem(this);

var spamount = $(tdd).find("#spamount");

var spdescription = $(tdd).find("#spdescription");

if (t.currentAdmin.Valid) {

spamount.attr("title", spamount.attr("title").formatDate(t.masterUser, ""));

}

else {

spdescription.hide();

}

});

});

嵌套绑定是模板自动完成的。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类