מה זה jQuery Templates?
תקראו את המאמר הקודם שלי: לחצו כאן
לעבודה!!!
קודם כל נבדוק ב facebook api את הצורה של הבקשות שלנו:
http://graph.facebook.com/arnold.simha/?callback=? כפי שניתן לראות שאני מבקש את המידע אותו הפרופיל שלי:
?({
"id": "792563441",
"name": "Arnold Simha",
"first_name": "Arnold",
"last_name": "Simha",
"link": "http://www.facebook.com/arnold.simha",
"username": "arnold.simha",
"gender": "male",
"locale": "en_US"
});
כעת נכין את ה HTML שלנו:
עכשיו לחלק המעניין - ה template:
<script id="cardTemplate" type="text/x-jquery-tmpl">
{{if thumbnail != "" }}
<div id="thumbnail">
<img src="${thumbnail}" alt="${name}" />
</div>
{{/if}}
<div id="data">
<div class="row">
<label>Id: </label>${id}
</div>
<div class="row">
<label>Name: </label><a href="${link}">${name}</a>
</div>
<div class="row">
<label>User Name: </label>${username}
</div>
<div class="row">
<label>Gender: </label>${gender}
</div>
</div>
</script>
כפי שאתם רואים שהמשתנים הדינאמיים נכתבים בצורה כזאת:
בנוסף יש לנו תנאי if אשר בודק אם יש תמונה אז הוא יציג אותה.
לאחר שסיימנו עם ה HTML הגיע זמן לכתוב קצת קוד:
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(function ($) {
$.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
console.log(data);
});
});
</script>
נריץ ונקבל את המידע:

אין לנו את האלמנט של התמונה (thumbnail). הסיבה היא שהקישור לתמונה הוא:
נוסיף לאובייקט שלנו את האלמנט:
$.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
data.thumbnail = 'https://graph.facebook.com/arnold.simha/picture'
});
ודבר אחרון שנשאר זה לבנות את הטמפלט שלנו:
jQuery(function ($) {
$.getJSON("http://graph.facebook.com/arnold.simha/?callback=?", function (data) {
data.thumbnail = 'https://graph.facebook.com/arnold.simha/picture'
$("#cardTemplate").tmpl(data).appendTo("#myCard");
});
});
נריץ ונקבל:

נשדרג את זה טיפה בעזרת CSS3:
<style type="text/css">
body { font-size:12px; font-family:Arial; margin:0px; padding:0px; }
#myCard
{
background: #ffffff; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* W3C */
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
padding:10px;
border:1px solid #ccc;
width:300px;
margin:15px;
overflow:hidden;
}
#thumbnail, #data { float:left; }
#thumbnail { width:50px; text-align:left; margin-right:10px }
#thumbnail img { border:1px solid #ccc; padding:2px; background-color:#fff; }
.row label
{
display:inline-block;
*display:inline;
*zoom:1;
width:80px;
font-weight:bold;
}
</style>
ונקבל:

את הדמו תוכלו לראות כאן: לחץ כאן