คำสั่ง AngularJS ng-click, ng-show & ng-hide
⚡ สรุปอย่างชาญฉลาด
AngularJS Events ช่วยให้เว็บแอปพลิเคชันตอบสนองต่อการป้อนข้อมูลของผู้ใช้ เช่น การคลิกเมาส์ การกดปุ่ม และการวางเมาส์เหนือองค์ประกอบ คำสั่งต่างๆ เช่น ng-click, ng-show และ ng-hide จะผูกพฤติกรรมเหล่านั้นไว้ในมาร์กอัปโดยตรง แทนที่จะใช้ตัวรับฟังเหตุการณ์ DOM แบบกำหนดเอง
เหตุการณ์ AngularJS
เหตุการณ์ AngularJS เหตุการณ์ต่างๆ คือฟังก์ชันการทำงานที่ช่วยให้แอปพลิเคชันบนเว็บสามารถโต้ตอบกับข้อมูลที่ผู้ใช้ป้อนเข้ามา เช่น การคลิกเมาส์ การป้อนข้อมูลจากแป้นพิมพ์ และการวางเมาส์เหนือวัตถุ แอปพลิเคชันบนเว็บต้องจัดการกับเหตุการณ์เหล่านี้เพื่อดำเนินการตามภารกิจและการกระทำเฉพาะ และแต่ละเหตุการณ์จะถูกเรียกใช้งานเมื่อผู้ใช้ทำการกระทำที่ตรงกัน
ในการสร้างเว็บแอปพลิเคชัน ไม่ช้าก็เร็วแอปพลิเคชันของคุณจะต้องจัดการกับเหตุการณ์ DOM เช่น การคลิกและการเลื่อนเมาส์ การกดแป้นพิมพ์ และเหตุการณ์การเปลี่ยนแปลงต่างๆ AngularJS จัดเตรียมคำสั่งที่จัดการเหตุการณ์เหล่านี้โดยใช้รูปแบบการประกาศ
ตัวอย่างเช่น หากปุ่มบนหน้าเว็บควรประมวลผลบางอย่างเมื่อถูกคลิก คำสั่งเหตุการณ์ ng-click จะเป็นตัวเชื่อม (hook) สำหรับการประมวลผลนั้น
⚠️ ประกาศเกี่ยวกับการสนับสนุน: AngularJS มาถึงแล้ว สิ้นสุดชีวิตเมื่อวันที่ 31 ธันวาคม 2021 และจะไม่ได้รับการแก้ไขข้อบกพร่องหรือการแก้ไขด้านความปลอดภัยเพิ่มเติมจากทีม Angular อีกต่อไป คำแนะนำด้านล่างนี้ยังคงถูกต้องสำหรับการบำรุงรักษาแอปพลิเคชัน AngularJS 1.x ที่มีอยู่ สำหรับงานใหม่ ให้ใช้เวอร์ชันที่ทันสมัยกว่า เชิงมุมโดยที่คำสั่งเหล่านี้จะถูกแทนที่ด้วยการผูกเหตุการณ์ เช่น (click) และโดย *ngIf.
คำสั่ง ng-click ใน AngularJS คืออะไร
การขอ “คำสั่ง ng-คลิก” ใน AngularJS จะใช้การกำหนดพฤติกรรมแบบกำหนดเองเมื่อมีการคลิกองค์ประกอบ HTML โดยปกติจะใช้กับปุ่ม เนื่องจากเป็นสถานที่ที่พบได้บ่อยที่สุดในการกำหนดการตอบสนองต่อการคลิก และยังใช้เพื่อแสดงข้อความแจ้งเตือนเมื่อมีการคลิกด้วย
ไวยากรณ์ของ ng-click ใน AngularJS
<element ng-click="expression"> </element>
ตัวอย่างของ ng-click ใน AngularJS
ในตัวอย่าง ng-click นี้ ตัวแปรนับจะเพิ่มขึ้นทุกครั้งที่ผู้ใช้คลิกปุ่ม
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body ng-app=""> <script src="https://code.angularjs.org/1.8.3/angular.js"></script> <h1>Guru99 Global Event</h1> <button ng-click="count = count + 1" ng-init="count=0"> Increment </button> <div>The Current Count is {{count}}</div> </body> </html>
Code คำอธิบาย:
- คำสั่ง ng-init จะกำหนดค่าให้กับตัวแปรโลคอล
countเพื่อ 0 - คำสั่ง ng-click บนปุ่มจะเพิ่มค่าขึ้น
countเพิ่มขึ้น 1 หน่วยทุกครั้งที่คลิก - การแทรกสอด
{{count}}แสดงค่าปัจจุบันให้ผู้ใช้ทราบ
Output:
ปุ่มเพิ่มค่าจะปรากฏขึ้น โดยค่าเริ่มต้นจะเป็นศูนย์ การคลิกปุ่มนี้จะเพิ่มค่าขึ้นทีละหนึ่ง ดังแสดงในภาพด้านล่าง
คำสั่ง ng-show ใน AngularJS คืออะไร?
การขอ คำสั่ง ng-show แสดงหรือซ่อนค่าที่กำหนด HTML องค์ประกอบที่อิงตามนิพจน์ที่ระบุในแอตทริบิวต์ ng-show โดยภายในแล้ว องค์ประกอบจะถูกแสดงหรือซ่อนโดยการลบหรือเพิ่ม .ng-hide คลาส CSS คือคลาสที่กำหนดไว้ล่วงหน้าซึ่งใช้กำหนดค่าต่างๆ display ไปยัง none.
ไวยากรณ์ของ ng-show ใน AngularJS
<element ng-show="expression"> </element>
ตัวอย่างของ ng-show ใน AngularJS
ตัวอย่างนี้ใช้ ng-show เพื่อแสดงองค์ประกอบที่ซ่อนอยู่
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="DemoApp" ng-controller="DemoController"> <input type="button" value="Show Angular" ng-click="ShowHide()"/> <br><br><div ng-show="IsVisible">Angular</div> </div> <script type="text/javascript"> var app = angular.module('DemoApp', []); app.controller('DemoController', function($scope) { $scope.IsVisible = false; $scope.ShowHide = function() { $scope.IsVisible = true; }; }); </script> </body> </html>
Code คำอธิบาย:
- คำสั่ง ng-click บนปุ่มอ้างอิงถึง...
ShowHideฟังก์ชันที่กำหนดไว้ในคอนโทรลเลอร์DemoController. - แอตทริบิวต์ ng-show ถูกแนบไว้กับ div ที่มีข้อความ Angular อยู่ภายใน นี่คือองค์ประกอบที่เราสามารถควบคุมการมองเห็นได้
- ในตัวควบคุมนั้น
IsVisibleตัวแปรสมาชิกถูกวางไว้บนอ็อบเจ็กต์ขอบเขตและกำหนดค่าเริ่มต้นเป็นfalseดังนั้น div จะถูกซ่อนไว้เมื่อหน้าเว็บโหลดครั้งแรก ด้วย ng-show ค่าของ จริง แสดงองค์ประกอบและ เท็จ ซ่อนมันไว้ - การขอ
ShowHideชุดฟังก์ชันIsVisibleตั้งค่าเป็น true เพื่อให้ div ปรากฏขึ้น
Output:
div ที่บรรจุข้อความจะไม่แสดงให้เห็นในตอนแรก เนื่องจาก IsVisible เริ่มต้นเป็นเท็จ การคลิก แสดง Angular ตั้งค่าเป็นจริงแล้วข้อความจะปรากฏขึ้น
คำสั่ง ng-hide ใน AngularJS คืออะไร?
การขอ คำสั่ง ng-hide ซ่อนองค์ประกอบเมื่อเงื่อนไขเป็นจริง และแสดงองค์ประกอบเมื่อเงื่อนไขเป็นเท็จ ซึ่งเป็นสิ่งที่ตรงกันข้ามกับ ng-show อย่างสิ้นเชิง ภายในแล้วมันใช้โครงสร้างข้อมูลเดียวกัน .ng-hide คลาส CSS
ไวยากรณ์ของ ng-hide ใน AngularJS
<element ng-hide="expression"> </element>
ตัวอย่างของ ng-hide ใน AngularJS
ตัวอย่างนี้เลียนแบบตัวอย่างของ ng-show เพื่อให้สามารถเปรียบเทียบคำสั่งทั้งสองได้โดยตรง
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="DemoApp" ng-controller="DemoController"> <input type="button" value="Hide Angular" ng-click="ShowHide()"/> <br><br><div ng-hide="IsVisible">Angular</div> </div> <script type="text/javascript"> var app = angular.module('DemoApp', []); app.controller('DemoController', function($scope) { $scope.IsVisible = false; $scope.ShowHide = function() { $scope.IsVisible = true; }; }); </script> </body> </html>
Code คำอธิบาย:
- คำสั่ง ng-click บนปุ่มอ้างอิงถึง
ShowHideฟังก์ชันมาDemoController. - การขอ ng-hide แอตทริบิวต์นี้ถูกแนบไปกับ div ที่มีข้อความ Angular อยู่ภายใน
IsVisibleได้รับการเริ่มต้นเป็นfalseเนื่องจากนี่คือ ng-hide ไม่ใช่ ng-show ค่า false หมายความว่า div นั้นถูกซ่อนอยู่ มองเห็นได้ เมื่อหน้าเว็บโหลดเสร็จครั้งแรก- การขอ
ShowHideชุดฟังก์ชันIsVisibleตั้งค่าเป็น true ซึ่งจะซ่อน div นั้น
Output:
div จะแสดงขึ้นมาในตอนแรกเนื่องจากมีการส่งค่า false ให้กับ ng-hide เมื่อคลิกแล้ว... ซ่อน Angular ผ่านการตรวจสอบแล้ว คำนั้นก็หายไป
ng-show กับ ng-hide กับ ng-if: ความแตกต่างที่สำคัญ
คำสั่งสามคำสั่งนี้ควบคุมว่าผู้ใช้จะเห็นองค์ประกอบหรือไม่ และการเลือกใช้คำสั่งใดคำสั่งหนึ่งจะส่งผลต่อทั้งพฤติกรรมและประสิทธิภาพการแสดงผล คำสั่งสองคำสั่งแรกจะสลับคลาส CSS เท่านั้น ดังนั้นองค์ประกอบนั้นจึงปรากฏอยู่ในหน้าเว็บเสมอ ส่วนคำสั่งที่สามจะเพิ่มและลบองค์ประกอบนั้นเอง
| แง่มุม | ng-แสดง | ng-hide | ง-อิฟ |
|---|---|---|---|
| องค์ประกอบที่มองเห็นได้เมื่อ | คำพูดนั้นถูกต้อง | นิพจน์นั้นเป็นเท็จ | คำพูดนั้นถูกต้อง |
| องค์ประกอบใน DOM | เสมอ | เสมอ | เฉพาะในขณะที่เป็นความจริงเท่านั้น |
| วิธีการที่ใช้ | Togglคลาส .ng-hide | Togglคลาส .ng-hide | สร้างและทำลายองค์ประกอบ |
| ขอบเขตสำหรับเด็ก | แบ่งปันขอบเขตหลัก | แบ่งปันขอบเขตหลัก | สร้างขอบเขตย่อยใหม่ |
| ผู้เฝ้ามองเมื่อซ่อนตัว | ยังคงใช้งานอยู่ | ยังคงใช้งานอยู่ | ลบออก |
| เหมาะสำหรับ | การปรับเปลี่ยนเนื้อหาแสงบ่อยครั้ง | สภาวะกลับด้าน | เนื้อหาหนักๆ มักไม่ค่อยได้เห็นกันบ่อยนัก |
ใช้ ng-show หรือ ng-hide เมื่อองค์ประกอบมีการเปลี่ยนแปลงบ่อยๆ เนื่องจากองค์ประกอบนั้นจะไม่ถูกสร้างขึ้นใหม่ และการเปลี่ยนแปลงนั้นใช้เพียงแค่การเปลี่ยนคลาสเท่านั้น ส่วนส่วนที่แสดงไม่บ่อยนักและมีค่าใช้จ่ายสูง ให้ใช้ ng-if เนื่องจากหากลบองค์ประกอบนั้นออก ก็จะลบตัวตรวจสอบ (watchers) ขององค์ประกอบนั้นออกไปด้วย และลดต้นทุนการประมวลผล (digest cost) ในแต่ละรอบ
คำสั่ง Listener เหตุการณ์ AngularJS
คุณสามารถเพิ่มตัวรับฟังเหตุการณ์ AngularJS ให้กับองค์ประกอบ HTML โดยใช้วิธีการเหล่านี้อย่างน้อยหนึ่งวิธี สั่ง:
- ng-เบลอ
- ng-เปลี่ยน
- ng-คลิก
- ng-คัดลอก
- ng-ตัด
- ng-dblคลิก
- ng-โฟกัส
- ng-keydown
- NG-ปุ่มกด
- ng-keyup
- ng-mousedown
- ng-mouseenter
- ng-mouseave
- ng-mousemove
- ng-เมาส์โอเวอร์
- ng-เมาส์อัพ
- ng-วาง
- ng-ส่ง
แต่ละคำสั่งจะรับนิพจน์ และเหตุการณ์ของเบราว์เซอร์แบบดิบๆ สามารถเข้าถึงได้ภายในนั้น $event เมื่อตัวจัดการต้องการรายละเอียด เช่น ปุ่มที่กด หรือพิกัดการคลิก










