Tutorial

Google Web Polymer - Core Pages หลอกตาประชาชน (EP.6)

By Arnon Puitrakul - 02 เมษายน 2015

Google Web Polymer - Core Pages หลอกตาประชาชน (EP.6)

เมื่อ EP. ทีแล้วเราได้เรียนรู้เรื่องของการผูกข้อมูลกับ JS กันไปแล้ว วันนี้เราขยับมาอีกสเต๊ปนั้นคือ การใช้ Core Pages กับ JS แบบเมื่อ EP. ที่แล้ว

Today's Target

วันนี้เราจะมาเรียนรู้เรื่องของการใช้ Core Pages เพื่อให้เรากระโดดไปอีกหน้าได้อย่างง่ายดาย (ถ้านึกไม่ออกให้ไปลองเข้าหน้าเว็บของ Polymer ดู แล้วลองคลิกลิงค์ดูจะเห็นว่าหน้ามันไม่ได้ถูกโหลดใหม่เลย) จริงๆมันมีหลายวิธีในการทำ แต่วันนี้เราจะใช้วิธีบ้านๆในการทำก่อน นั่นคือ เราจะสร้าง หน้าของเราทั้งหมดในไฟล์เดียว แล้วใช้ js ควบคุมการแสดงผลอีกที

มาเริ่มทำกันเบย~~

ก่อนอื่นให้ดึงไฟล์ของเมื่อ ep ที่แล้วมาก่อนนะ แล้วใน Content ให้ตามนี้เลย

 <core-pages selected = "0">
 <section>
 <h1>Home</h1>
 <div>Home content</div>
 </section>

 <section>
 <h1>Portfolio</h1>
 <div>Portfolio content</div>
 </section>

 <section>
 <h1>Contact</h1>
 <div>Contact content</div>
 </section>
 </core-pages>

มันคือการสร้าง Core Pages อยากรู้ว่าคืออะไรลอง Refresh ดู ครับแล้วลองเปลี่ยนตัวเลขตรง selected ดู หน้ามันจะเปลี่ยนไปเรื่อยๆตามที่เราสั่ง แต่ถ้ามี Menu เยอะๆเราก็ไม่รู้เลขใช่ม่ะครับ มันจึงเกิด Properity ที่ชื่อว่า valueattr ขึ้นมา มาลองเล่นกัน

 <core-pages selected = "home" valueattr = "data-category">
 <section data-category = "home">
 <h1>Home</h1>
 <div>Home content</div>
 </section>

 <section data-category = "portfolio">
 <h1>Portfolio</h1>
 <div>Portfolio content</div>
 </section>

 <section data-category = "contact">
 <h1>Contact</h1>
 <div>Contact content</div>
 </section>
 </core-pages>

สังเกตนะครับว่าใน Section Tag นั้นผมเพิ่ม Properity ชื่อว่า data-category ขึ้นมาเพื่อเป็นเหมือน Bookmark ว่าส่วนที่เราต้องการมันอยู่ตรงไหน (เหมือนชื่อของมันนั่นล่ะ) และในส่วนของ Core Pages ผมเพิ่ม valueattr เข้าไป และเปลี่ยน selected เป็นคำว่า home แทน
แล้วลอง Refresh ดูครับ มันจะเข้าหน้า Home ให้เรา แต่ถ้าเรา เปลี่ยนเป็น Contact แทน มันก็จะเข้าหน้า Contact ให้เรา เจ๋งปุ๊ล่ะ!!

ปัญหาใหม่!!

ในเวลาใช้งานจริงๆ User คงไม่มานั่งแก้โค๊ตเราหรอกเนอะ เพราะงั้นผมจะสร้าง Menu เป็นแถบข้างๆล่ะกัน ถ้าใครใช้ไฟล์เก่าก็แก้ที่ core-header-panel ได้เลย

 <core-header-panel drawer>
 <core-toolbar>Menu</core-toolbar>
 <core-menu selected = "home" valueattr = "data-category">
 <core-item data-category = "home" label = "Home"></core-item>
 <core-item data-category = "portfolio" label = "Portfolio"></core-item>
 <core-item data-category = "contact" label = "Contact"></core-item>
 </core-menu>
 </core-header-panel>

เพิ่มแล้วก็ทำเหมือนของ เมื่อกี้เลย ทีนี้ลอง Refresh ดูครับ จะเห็นว่าคลิกไปก็ไม่มีอะไรเกิดขึ้น 5555 โดนหลอกและ (ซะที่ไหนล่ะเฟ้ย) ปัญหามันคือ 2 Element นี้มันไม่ได้เชื่อมกัน
เราจะเชื่อมมันด้วย ตัวแปรใน JS เหมือนของ EP. ที่แล้วเลย ผมเปลี่ยน

 <core-menu selected = "home" valueattr = "data-category">

เป็น แบบด้านล่าง เพื่อให้มันวิ่งตามตัวแปร

 <core-menu selected = "{{page}}" valueattr = "data-category">

ที่ core-pages ก็เช่นกัน เพราะเราต้องการให้หน้าเปลี่ยนไปด้วยใช้ม้าาล่ะ

<core-pages selected = "{{page}}" valueattr = "data-category">

ลอง Refresh แล้วลองคลิกที่เมนู ดูเห็นม่ะครับ ได้และ อิอิ แต่ก็ปัญหาอีก ตอนเราเข้ามาครั้งแรก มันไม่ขึ้นอะไรเลย นั่นเพราะว่าเราไม่ได้เซ็ตค่า Default ให้มัน วิธีคือ เราจะเขียน JS เพื่อจัดการมันกัน

var app = document.querySelector('#app');
app.page = 'home';

ผมเช็ตตัวแปร page ให้เป็นหน้า home แทน พอเวลาเราเข้ามาหน้าแรกก็จะกลายเป็นหน้า home ทันทีจาก ที่ไม่ขึ้นอะไร
สรุปวันนี้เราได้เรียนรู้เรื่อง

  • การใช้ valueattr เพื่อเก็บตัวเลือกบน Selected
  • การใช้ Core Pages เพื่อเปลี่ยนหน้าเว็บโดยไม่ได้ Refresh
    วันนี้น้อยมากครับ ง่ายๆอยู่ วันถัดไปจะเป็นอะไรนั้น รอได้เลยนะครับ
    Source Code : https://drive.google.com/folderview?id=0BwrPA9Miv4o2WTFCT3VpTElUdk0&usp=sharing

Read Next...

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ก่อนหน้านี้เราเปลี่ยนมาใช้ Zigbee Dongle กับ Home Assistant พบว่าเสถียรขึ้นเยอะมาก อุปกรณ์แทบไม่หลุดออกจากระบบเลย แต่การติดตั้งมันเข้ากับ Synology DSM นั้นมีรายละเอียดมากกว่าอันอื่นนิดหน่อย วันนี้เราจะมาเล่าวิธีการเพื่อใครเอาไปทำกัน...

โหลด CSV วิธีไหนเร็วที่สุด ?

โหลด CSV วิธีไหนเร็วที่สุด ?

เมื่อหลายวันก่อนมีพี่ที่รู้จักกันมาถามว่า เราจะโหลด CSV ยังไงให้เร็วที่สุด เป็นคำถามที่ดูเหมือนง่ายนะ แต่พอมานั่งคิด ๆ ต่อ เห้ย มันมีอะไรสนุก ๆ ในนั้นเยอะเลยนี่หว่า วันนี้เราจะมาเล่าให้อ่านกันว่า มันมีวิธีการอย่างไรบ้าง และวิธีไหนเร็วที่สุด เหมาะกับงานแบบไหน...

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ตั้งแต่ใช้ Obsidian เป็น App จด Note หลัก ชอบวิธีการจัดการมาก ๆ เมื่อใช้งานร่วมกับ Plugin ต่าง ๆ ยิ่งทำให้การใช้งานยืดหยุ่นมากกว่าเดิมอีกเยอะมาก ๆ ติดอยู่เรื่องเดียวคือ การใช้งานในหลาย ๆ อุปกรณ์ แต่เราเจอ Plugin ตัวนึงที่น่าสนใจมาก ๆ คือ LiveSync วันนี้เราจะมาเล่าวิธีการติดตั้ง และใช้งานมันกัน...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...