สิ่งที่เรากล่าวถึงไปแล้วนั้นมากพอสําหรับหน้าเว็บหลายหน้า เนื่องจากคุณได้วาดแผนภูมิบนหน้าเว็บ อย่างไรก็ตาม หากต้องการจับการคลิกของผู้ใช้หรือต้องการควบคุมพร็อพเพอร์ตี้หรือข้อมูลในแผนภูมิที่คุณวาดไว้แล้ว คุณต้องฟังเหตุการณ์ที่แผนภูมิทําไว้
แผนภูมิทั้งหมดมีเหตุการณ์บางประเภทเกิดขึ้น สาเหตุที่พบบ่อยที่สุดมีดังนี้:
- พร้อม - ส่งเมื่อวาดแผนภูมิในหน้าเว็บและพร้อมสําหรับการตอบกลับเมธอด ฟังเหตุการณ์นี้หากต้องการขอข้อมูลจากแผนภูมิ
- select - โยนเมื่อผู้ใช้เลือกข้อมูลในแผนภูมิ: มักจะคลิกแท่งหรือแผนภูมิวงกลม
- error - มีข้อผิดพลาดเมื่อแผนภูมิแสดงผลข้อมูลที่ส่งไม่ได้ เนื่องจากรูปแบบ
DataTable
ไม่ถูกต้อง - onmouseover และ onmouseout - เมื่อผู้ใช้วางเมาส์เหนือองค์ประกอบองค์ประกอบแผนภูมิขึ้นหรือลงตามลําดับ
การฟังเหตุการณ์จะเป็นเรื่องง่าย เพียงเรียกใช้ google.visualization.events.addListener()
ผ่านแฮนเดิลไปยังแผนภูมิ ชื่อเหตุการณ์ที่จะตรวจจับ และชื่อของตัวแฮนเดิลเพื่อเรียกเมื่อเหตุการณ์ส่ง คุณสามารถเรียกใช้วิธีนี้ด้วยแฮนเดิลแผนภูมิใดก็ได้ แม้ว่าจะไม่ได้โทรหา draw()
ก็ตาม โปรดทราบว่าคุณสามารถเรียกใช้ google.visualization.events.addOneTimeListener()
หากต้องการให้ระบบเรียกผู้ฟัง 1 ครั้งก่อนที่จะนําตัวเองออก
ต่อไปนี้เป็นข้อมูลโค้ดบางส่วนที่แสดงวิธีลงทะเบียนเพื่อบันทึกเหตุการณ์ select ของแผนภูมิ
load libraries... function drawChart() { prepare data... var chart = new google.visualization.PieChart(document.getElementById('chart_div')); // The select handler. Call the chart's getSelection() method function selectHandler() { var selectedItem = chart.getSelection()[0]; if (selectedItem) { var value = data.getValue(selectedItem.row, selectedItem.column); alert('The user selected ' + value); } } // Listen for the 'select' event, and call my function selectHandler() when // the user selects something on the chart. google.visualization.events.addListener(chart, 'select', selectHandler); draw the chart... }
ตัวอย่างต่อไปนี้แสดงตัวอย่างโค้ด Hello Charts ที่มี Listener เหตุการณ์ใหม่ที่เลือก ลองใช้เลย
<html> <head> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load the Visualization API and the piechart package. google.charts.load('current', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(drawChart); // Callback that creates and populates a data table, // instantiates the pie chart, passes in the data and // draws it. function drawChart() { // Create the data table. var data = new google.visualization.DataTable(); data.addColumn('string', 'Topping'); data.addColumn('number', 'Slices'); data.addRows([ ['Mushrooms', 3], ['Onions', 1], ['Olives', 1], ['Zucchini', 1], ['Pepperoni', 2] ]); // Set chart options var options = {'title':'How Much Pizza I Ate Last Night', 'width':400, 'height':300}; // Instantiate and draw our chart, passing in some options. var chart = new google.visualization.PieChart(document.getElementById('chart_div')); function selectHandler() { var selectedItem = chart.getSelection()[0]; if (selectedItem) { var topping = data.getValue(selectedItem.row, 0); alert('The user selected ' + topping); } } google.visualization.events.addListener(chart, 'select', selectHandler); chart.draw(data, options); } </script> </head> <body> <!--Div that will hold the pie chart--> <div id="chart_div" style="width:400; height:300"></div> </body> </html>
ข้อมูลเพิ่มเติม