ต้นแบบ - Templating
เทมเพลตใช้สำหรับการจัดรูปแบบกลุ่มของวัตถุที่คล้ายกันและสร้างเอาต์พุตที่จัดรูปแบบสำหรับวัตถุเหล่านี้
Prototype มีคลาสTemplateซึ่งมีสองวิธี -
Template()- นี่คือเมธอด constructor ซึ่งใช้เพื่อสร้างออบเจ็กต์เทมเพลตและเรียกเมธอดeval ()เพื่อใช้เทมเพลต
evaluate() - วิธีนี้ใช้เพื่อใช้เทมเพลตเพื่อจัดรูปแบบวัตถุ
มีสามขั้นตอนที่เกี่ยวข้องในการสร้างเอาต์พุตที่จัดรูปแบบ
Create a template- สิ่งนี้เกี่ยวข้องกับการสร้างข้อความที่จัดรูปแบบไว้ล่วงหน้า ข้อความนี้มีเนื้อหาที่จัดรูปแบบพร้อมด้วย#{fieldName}ค่า เหล่านี้#{fieldName}ค่าจะถูกแทนที่ด้วยค่าจริงเมื่อวิธีการประเมิน ()จะถูกเรียกด้วยค่าจริง
Defining actual values- สิ่งนี้เกี่ยวข้องกับการสร้างค่าที่แท้จริงในรูปแบบของคีย์และค่า คีย์เหล่านี้จะถูกแมปในเทมเพลตและจะถูกแทนที่ด้วยค่าที่เกี่ยวข้อง
Mapping Keys and replacing Values- นี่เป็นขั้นตอนสุดท้ายที่จะเรียกeval ()และคีย์ทั้งหมดที่มีอยู่ในออบเจ็กต์ที่จัดรูปแบบจะถูกแทนที่ด้วยค่าที่กำหนด
ตัวอย่าง 1
ขั้นตอนที่ 1
สร้างเทมเพลต
var myTemplate = new Template('The \ TV show #{title} was directed by #{author}.');
ขั้นตอนที่ 2
เตรียมชุดค่าของเราซึ่งจะถูกส่งผ่านไปยังออบเจ็กต์ด้านบนเพื่อให้มีเอาต์พุตที่จัดรูปแบบ
var record1 = {title: 'Metrix', author:'Arun Pandey'};
var record2 = {title: 'Junoon', author:'Manusha'};
var record3 = {title: 'Red Moon', author:'Paul, John'};
var record4 = {title: 'Henai', author:'Robert'};
var records = [record1, record2, record3, record4 ];
ขั้นตอนที่ 3
ขั้นตอนสุดท้ายคือการเติมค่าทั้งหมดในเทมเพลตและสร้างผลลัพธ์สุดท้ายดังนี้ -
records.each( function(conv) {
alert( "Formatted Output : " + myTemplate.evaluate(conv) );
});
ลองรวบรวมทั้งสามขั้นตอนนี้เข้าด้วยกัน -
<html>
<head>
<title>Prototype examples</title>
<script type = "text/javascript" src = "/javascript/prototype.js"></script>
<script>
function showResult() {
// Create template with formatted content and placeholders.
var myTemplate = new Template('The \ TV show #{title} was directed by #{author}.');
// Create hashes with the required values for placeholders
var record1 = {title: 'Metrix', author:'Arun Pandey'};
var record2 = {title: 'Junoon', author:'Manusha'};
var record3 = {title: 'Red Moon', author:'Paul, John'};
var record4 = {title: 'Henai', author:'Robert'};
var records = [record1, record2, record3, record4 ];
// Now apply template to produce desired formatted output
records.each( function(conv) {
alert( "Formatted Output : " + myTemplate.evaluate(conv) );
});
}
</script>
</head>
<body>
<p>Click the button to see the result.</p>
<br />
<br />
<input type = "button" value = "Result" onclick = "showResult();"/>
</body>
</html>
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -