Я задал вопрос о том, как избежать записи html в js, затем некоторые люди говорят мне, используя шаблон javascript, например, jquery / template pugin и т. Д.
ЭтоХорошая идея, когда генерировать статический HTML, например:
<ul id="productList"></ul>
<script id="productTemplate" type="text/x-jquery-tmpl">
<li><a>${Name}</a> (${Price})</li>
</script>
<script type="text/javascript">
var products = [
{ Name: "xxx", Price: "xxx" },
{ Name: "yyy", Price: "xxx" },
{ Name: "zzz", Price: "xxx" }
];
// Render the template with the products data and insert
// the rendered HTML under the "productList" element
$( "#productTemplate" ).tmpl( products )
.appendTo( "#productList" );
</script>
Однако, когда я пытаюсь связать какое-то событие с созданным HTML, я сталкиваюсь с некоторой проблемой.
Например, у меня есть страницакакой пользователь может искать некоторые продукты по цене / названию / местоположению.
Таким образом, у меня есть три функции:
searchByPrice(lowPrice,highPrice,productType,currentPage)
searchByName(name,productType,currentPage);
searchByLocation(location,currentpage);
ALl вышеупомянутая функция имеет реализованный метод на стороне сервера, и они будутперезапустите продукты с использованием формата xml.
Поскольку они будут перезапускать очень много элементов, поэтому мне приходится разбивать их на страницы, «currengPage» используется, чтобы сообщить стороне сервера, какая часть результатов должна быть возвращена.
Когда клиент получает результат со стороны сервера, теперь это js для отображения его в div и создания пейджинговой панели, если это возможно.
Прежде чем я узнаю шаблон, я использую этот способ(что я больше всего ненавижу, стараюсь изо всех сил избегать):
function searchByPrice(lowPrice,highPrice,productType,currentPage){
var url="WebService.asmx/searchByPrice?low="+lowPrice="&high="+highPrice+"&curPage="+currentPage;
//code to create the xmlHttp object
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var i=0;
var Prohtml="";
var proList=parseProductList(xmlhttp.responseText);
for(i=0;i<prolist.length;i++){
Prohtml+="<li><a href='#'>"+prolist[i].name+"</a> ("+prolist[i].price"+)</li>";
}
//generate the paging bar:
var totleResult=getTotleResultNumber(xmlhttp.responseText);
if(totleResult>10){
var paghtml="<span>";
//need the paging
var pagNum=totleResult/10+1;
for(i=1;i<=pagenum;i++){
paghtml+="<a onclick='searchByPrice(lowPrice,highPrice,productType,currentPage+1)'>i</a>";
//here the synax is not right,since I am really not good at handle the single or doule '"' in this manner.
//also if in the searchByName function,the click function here should be replaced using the searchByName(...)
}
}
}
}
}
В этом примере легко использовать шаблон для генерации «Prohtml», поскольку с ними нет обработки событий, но как насчет"paghtml", функция щелчка отличается в разных типах поиска.
Итак, есть ли хорошая идея, чтобы передать это?