AngularJS Scopes
ЁЯУМ AngularJS Scope рдХреНрдпрд╛ рд╣реИ?
AngularJS рдореЗрдВ $scope рдПрдХ object рд╣реЛрддрд╛ рд╣реИ рдЬреЛ Controller рдФрд░ View (HTML) рдХреЗ рдмреАрдЪ data рдХреЛ connect рдХрд░рддрд╛ рд╣реИред
рдЖрд╕рд╛рди рднрд╛рд╖рд╛ рдореЗрдВ:
$scope
рд╡реЛ bridge рд╣реИ рдЬреЛ Controller рдореЗрдВ рд░рдЦрд╛ data, HTML (View) рддрдХ рдкрд╣реБрдБрдЪрд╛рддрд╛ рд╣реИред
ЁЯОп рд╕реНрдХреЛрдк рдХрд╛ рдХрд╛рдо рдХреНрдпрд╛ рд╣реИ?
- Controller рдореЗрдВ рдмрдиреЗ variables рдХреЛ View рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдирд╛
- View рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ Controller рддрдХ рдкрд╣реБрдБрдЪрд╛рдирд╛
- Two-way data binding рдХреЛ possible рдмрдирд╛рдирд╛
- AngularJS expressions рдФрд░ bindings рдХреЛ рдХрд╛рдо рдореЗрдВ рд▓рд╛рдирд╛
тЬНя╕П Basic Syntax:
app.controller("myCtrl", function($scope) {
$scope.name = "Amit";
});
<p>{{ name }}</p>
рдпрд╣рд╛рдБ name
рдХрд╛ data $scope
рдХреЗ рдЬрд╝рд░рд┐рдП Controller рд╕реЗ HTML рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реИред
ЁЯзк Example: Scope in Action
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.firstName = "Rahul";
$scope.lastName = "Sharma";
});
</script>
</head>
<body ng-controller="myCtrl">
<h3>Full Name: {{ firstName + " " + lastName }}</h3>
</body>
</html>
Output: Full Name: Rahul Sharma
ЁЯз▒ Scope Hierarchy (Hierarchy of Scopes)
AngularJS рдореЗрдВ scopes hierarchical (layer-wise) рд╣реЛрддреЗ рд╣реИрдВ тАФ рдпрд╛рдиреА parent-child structure рдореЗрдВред
Root Scope
тФЬтФАтФА Controller 1 Scope
тФЬтФАтФА Controller 2 Scope
тФФтФАтФА Child Controller Scope
рдорддрд▓рдм: рдПрдХ Controller рдХрд╛ scope рд╕рд┐рд░реНрдл рдЙрд╕реА controller рдХреЗ рдЕрдВрджрд░ valid рд╣реЛрддрд╛ рд╣реИред
ЁЯФД Example: Nested Scopes
<div ng-app="myApp" ng-controller="parentCtrl">
Parent Name: {{ name }}
<div ng-controller="childCtrl">
<br>Child Name: {{ name }}
</div>
</div>
<script>
var app = angular.module("myApp", []);
app.controller("parentCtrl", function($scope) {
$scope.name = "Parent";
});
app.controller("childCtrl", function($scope) {
$scope.name = "Child";
});
</script>
тЬЕ Output:
Parent Name: Parent
Child Name: Child
Child controller рдЕрдкрдиреЗ рдЕрд▓рдЧ
$scope
рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
ЁЯУж Scope Object рдореЗрдВ рдХреНрдпрд╛-рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
- Strings (
$scope.name = "Amit"
) - Numbers (
$scope.age = 25
) - Arrays (
$scope.items = [1,2,3]
) - Objects (
$scope.student = {name: "Anu", marks: 88}
) - Functions (
$scope.greet = function() { ... }
)
ЁЯТб Best Practices:
тЬЕ $scope
рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╕рд┐рд░реНрдл data рдФрд░ logic рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ
тЭМ DOM manipulation (document.getElementById
) рдирд╛ рдХрд░реЗрдВ
тЬЕ рд╣рд░ controller рдХрд╛ рдЕрд▓рдЧ $scope
рд░рдЦрдирд╛ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ
тЬЕ Reusable data рдХреЛ рдПрдХ common parent scope рдореЗрдВ рд░рдЦреЗрдВ
ЁЯза рдЕрднреНрдпрд╛рд╕ рдкреНрд░рд╢реНрди (Exercise)
- AngularJS рдореЗрдВ
$scope
рдХрд╛ рдХреНрдпрд╛ role рд╣реИ? - рдХреНрдпрд╛ рджреЛ controllers рдПрдХ рд╣реА
$scope
share рдХрд░рддреЗ рд╣реИрдВ? - рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ output рдмрддрд╛рдЗрдП:
$scope.a = 5;
$scope.b = 10;
$scope.sum = function() {
return $scope.a + $scope.b;
};
<p>{{ sum() }}</p>
тЬЕ рдЖрдкрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛?
- AngularJS
$scope
рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ - рдХреИрд╕реЗ Controller рдФрд░ View рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- Nested scopes рдФрд░ рдЙрдирдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░
- Scope object рдореЗрдВ рдХреНрдпрд╛-рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
- Practice questions
ЁЯОп рдЕрдм рдЖрдк AngularJS рдХреА binding logic рдФрд░ structure рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдордЭ рдЪреБрдХреЗ рд╣реИрдВ!