ตัวอย่างโค้ดและการทำงาน นี้เป้นตัวอย่างสำหรับการทดสอบ
ลำดับการทำงาน ของ javascript แบบปกติ และส่วนที่ใช้งาน
angularjs เนื้อหาจะไม่อธิบายอะไรมาก แต่มีความสำคัญ เพื่อ
ให้เราเข้าใจ เส้นทางการทำงานของโปรแกรม
ไฟล์ app.js
console.log("1"); angular.module('app',[]) .controller('appController',function($scope){ console.log("2"); $scope.greeting="Hello World"; }); console.log("3");
ไฟล์ index.html
กรณีแรก มีการเรียกใช้งาน ฟังก์ชั่น angular.bootstrap
เป็นการเรียกใช้งาน angularjs แบบกำหนดเอง
โดยไม่ได้ กำหนด ng-app ในแท็กเปิด html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js"></script> <!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular-resource.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular-route.min.js"></script> --> <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" /> <script type="text/javascript"> console.log(0); </script> <script src="app.js"></script> <title>My Learn AngularJs 7</title> <style type="text/css"> </style> </head> <body ng-controller="appController"> <br> <div class="container"> {{greeting}} </div> <script type="text/javascript"> angular.element(document).ready(function() { console.log(7); }); console.log(4); angular.bootstrap(document,['app'],[]); console.log(5); </script> </body> </html> <script type="text/javascript"> console.log(6); </script>
ผลลัพธ์ใน console
0 (index):12 1 app.js:1 3 app.js:7 4 (index):32 2 app.js:4 5 (index):34 6 (index):39 7 (index):30
จะเห็นว่า การทำงานของ javascript ของคำสั่งที่ไม่ได้ใช้งาน angularjs
0 (index):12
จะทำงานเรียงจากบนลงล่าง ตามลำดับ
ถ้ามีการ include ไฟล์ js การทำงานก็จะเข้าไปทำงานในไฟล์นั้นก่อน
1 app.js:1
3 app.js:7
ค่าด้านบนคือการที่โปรแกรมวิ่งเข้าไปทำงานในไฟล์ js ที่ include แต่ยังไม่ทำงานใน
ส่วนของ angularjs
และออกมาทำงานด้านนอกไฟล์ js
4 (index):32
และเมื่อถึงบรรทัดที่ มีการเรียกใช้งาน angular.bootstrap โปรแกรมจึงเข้าไป
ทำงานในไฟล์ js ในส่วนของ angularjs
2 app.js:4
และออกมาทำงานด้านนอกไฟล์ js ของส่วน angularjs
5 (index):34
6 (index):39
และส่วนสุดท้าย ที่ทำงานท้ายสุดคือ ฟังก์ชั่น
angular.element(document).ready(function() { console.log(7); });
ส่วนนี้จะเป็นการตรวจสอบว่า มีการ rendeed หน้าเพจ เสร็จเรียบร้อย
แล้วก่อนถึงจะทำงาน
7 (index):30
มาดูส่วนทำงานรูปแบบที่สอง
ไฟล์ index.html
กรณีที่ 2 ไม่มีการเรียกใช้งาน ฟังก์ชั่น angular.bootstrap (comment ปิดไว้)
และกำหนด ng-app ในแท็กเปิด html
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="utf-8" /> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js"></script> <!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular-resource.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular-route.min.js"></script> --> <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" /> <script type="text/javascript"> console.log(0); </script> <script src="app.js"></script> <title>My Learn AngularJs 7</title> <style type="text/css"> </style> </head> <body ng-controller="appController"> <br> <div class="container"> {{greeting}} </div> <script type="text/javascript"> angular.element(document).ready(function() { console.log(7); }); console.log(4); // angular.bootstrap(document,['app'],[]); console.log(5); </script> </body> </html> <script type="text/javascript"> console.log(6); </script>
ผลลัพธ์ใน console
0 (index):12 1 app.js:1 3 app.js:7 4 (index):32 5 (index):34 6 (index):39 2 app.js:4 7 (index):30
จะเห็นว่า angularjs ทำงานหลังจาก มีการ rendered หน้าเพจเรียบร้อยแล้ว
2 app.js:4
การรู้จักลำดับการทำงาน ของ javascript ข้างต้น มีประโยชน์ในการนำไปใช้ ในการพัฒนา
mobile app รวมทั้งการได้รู้จักการใช้งาน
angular.bootstrap และ angular.element(document).ready(function() {
จะมีประโยชน์ในการประยุกต์ต่อไป