AngularJS สคอป
- หน้าก่อนหน้า AngularJS ควบคุม
- หน้าต่อไป AngularJS ฟิลเตอร์
โซปเกาะ (scope) เป็นส่วนที่เชื่อมโยงระหว่าง HTML (มุมมอง) และ JavaScript (ควบคุมเครื่องมือ):
โซปเกาะเป็นตัวแปรที่มีคุณสมบัติและขั้นตอนการทำงานที่สามารถใช้งานได้:
โซปเกาะสามารถใช้งานได้ทั้งในตัวแปรมุมมองและควบคุมเครื่องมือ。
จะใช้สำหรับโซปเกาะมากฉันไหม?
เมื่อคุณสร้างควบคุมเครื่องมือใน AngularJS คุณจะ $scope
ส่งผ่านประกายว่าตัวแปร:
ตัวอย่าง
ในควบคุมเครื่องมือสร้างตัวแปร สามารถอ้างอิงในตัวแปรมุมมองได้:
<div ng-app="myApp" ng-controller="myCtrl"> <h1>{{carname}}</h1> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.carname = "Volvo"; }); </script>
เมื่อเรียกใช้ในคอนโทรลเลอร์ข้างใน}} $scope
เมื่อเพิ่มคุณสมบัติต่อตัวแปร แสดงภาพ (HTML) สามารถเข้าถึงคุณสมบัติเหล่านั้นได้
ในแสดงภาพ คุณไม่ใช้ $scope
คำหน้าตาคือ คุณเพียงต้องอ้างอิงชื่อพฤติกรรมเพียงอันเดียว ตัวอย่าง {{carname}}
。
เข้าใจโซนหน้าที่
ถ้าเรามองAngularJS โปรแกรมที่ประกอบด้วยส่วนต่างๆ ตามต่อไปนี้:
- แสดงภาพ คือ HTML
- โมเดล คือข้อมูลที่สามารถใช้ในแสดงภาพปัจจุบัน
- คอนโทรลเลอร์ คือฟังก์ชัน JavaScript ที่ใช้เพื่อสร้าง/แก้ไข/ลบ/ควบคุมข้อมูล
โซนหน้าที่นั้นเป็นโมเดล
โซนหน้าที่เป็นตัวแปรของ JavaScript ที่มีคุณสมบัติและวิธีที่ใช้ได้ทั้งโซนหน้าที่และคอนโทรลเลอร์
ตัวอย่าง
ถ้าคุณทำการเปลี่ยนแปลงในแสดงภาพ โมเดลและคอนโทรลเลอร์จะปรับปรุง:
<div ng-app="myApp" ng-controller="myCtrl"> <input ng-model="name"> <h1>ชื่อของฉันคือ {{name}}</h1> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.name = "Bill Gates"; }); </script>
เข้าใจโซนหน้าที่ของคุณ
การเข้าใจโซนหน้าที่ที่คุณกำลังจัดการเป็นสิ่งที่สำคัญในทุกโอกาส
ในตัวอย่างทั้งสองที่กล่าวข้างต้นมีเพียงโซนหน้าที่เดียว ดังนั้น การเข้าใจโซนหน้าที่ของคุณไม่ใช่ปัญหา แต่สำหรับโปรแกรมที่ใหญ่ขึ้น ส่วนบางส่วนของ HTML DOM อาจสามารถเข้าถึงโซนหน้าที่บางส่วนเท่านั้น
ตัวอย่าง
เมื่อจะบวกคำสั่ง ng-repeat ทุกครั้งที่สร้างขึ้นมีสามารถเข้าถึงวัตถุที่สำหรับการสร้างตัวโซนหน้าที่ในครั้งนี้:
<div ng-app="myApp" ng-controller="myCtrl"> <ul> <li ng-repeat="x in names">{{x}}</li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.names = ["Emil", "Tobias", "Linus"]; }); </script>
แต่ละ <li>
องค์ประกอบนี้สามารถเข้าถึงวัตถุที่สำหรับการสร้างตัวโซนหน้าที่ในครั้งนี้คือตัวแปรแบบข้อความ ด้วยการใช้ x
เพื่อเรียกใช้
โซนหลัก
ทุกโปรแกรมมี $rootScope
,มันตั้งอยู่ใน ng-app
โซนหน้าที่ที่สร้างขึ้นบนองค์ประกอบ HTML ที่ใช้คำสั่ง
rootScope สามารถใช้ได้ทั่วโปรแกรม
ถ้าตัวแปรมีชื่อเดียวกันกับโซนหน้าที่ปัจจุบันและrootScope โดยเฉพาะแล้วในโปรแกรมนี้ โปรแกรมจะใช้ตัวแปรในโซนหน้าที่ปัจจุบัน
ตัวอย่าง
ทั้งๆที่มีตัวแปรชื่อ "color" หนึ่งในโซนหน้าที่และrootScope:
<body ng-app="myApp"> <p>สีที่ชื่นชอบของrootScope:</p> <h1>{{color}}</h1> <div ng-controller="myCtrl"> <p>สีที่ชอบของควบคุมเชิงสเกล:</p> <h1>{{color}}</h1> </div> <p>สีที่ดีที่สุดของ rootScope ยังคงเป็น:</p> <h1>{{color}}</h1> <script> var app = angular.module('myApp', []); app.run(function($rootScope) { $rootScope.color = 'blue'; }); app.controller('myCtrl', function($scope) { $scope.color = "red"; }); </script> </body>
- หน้าก่อนหน้า AngularJS ควบคุม
- หน้าต่อไป AngularJS ฟิลเตอร์