AngularJS Data Binding
ЁЯУМ Data Binding рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
Data Binding рдПрдХ technique рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ App рдХрд╛ UI (View) рдФрд░ Data (Model) рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ connected рд░рд╣рддреЗ рд╣реИрдВред
рдЖрд╕рд╛рди рднрд╛рд╖рд╛ рдореЗрдВ: рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ UI рдЕрдкрдиреЗ-рдЖрдк рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЬрдм UI рдореЗрдВ рдХреБрдЫ input рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рднреА рдЕрдкрдиреЗ-рдЖрдк рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
ЁЯФБ AngularJS рдореЗрдВ рдХреМрди-рд╕рд╛ Data Binding рд╣реЛрддрд╛ рд╣реИ?
тЬЕ Two-Way Data Binding
AngularJS рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ feature рд╣реИ рдЗрд╕рдХрд╛ two-way data binding, рдорддрд▓рдм:
- Model (data) рдореЗрдВ change тЗТ View automatic update
- View (UI) рдореЗрдВ change тЗТ Model automatic update
тЬНя╕П Basic Syntax
<input type="text" ng-model="name">
<p>Hello, {{ name }}!</p>
ng-model="name"
тЖТ Data рдХреЛ View рд╕реЗ bind рдХрд░рддрд╛ рд╣реИ{{ name }}
тЖТ View рдореЗрдВ data рдХреЛ show рдХрд░рддрд╛ рд╣реИ
ЁЯОп Example: Real-Time Data Binding
<!DOCTYPE html>
<html ng-app="">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<h2>AngularJS Data Binding</h2>
<p>Enter your name: <input type="text" ng-model="yourName"></p>
<p>Welcome, {{ yourName }}!</p>
</body>
</html>
ЁЯФН Output:
рдЬреИрд╕реЗ рд╣реА рдЖрдк name рдЯрд╛рдЗрдк рдХрд░реЗрдВрдЧреЗ, рдиреАрдЪреЗ automatic live update рд╣реЛрдЧрд╛ред
ЁЯФН Data Binding рдХреЗ рдкреНрд░рдХрд╛рд░ (Types of Binding in AngularJS)
рдкреНрд░рдХрд╛рд░ | Description |
---|---|
Two-Way Binding | Model рдФрд░ View рджреЛрдиреЛрдВ рдЬреБрдбрд╝реЗ рд░рд╣рддреЗ рд╣реИрдВ (ng-model ) |
One-Way Binding (View to Model) | View рдореЗрдВ expression рдХреЗ рдЬрд╝рд░рд┐рдП data show ({{ }} ) |
One-Way Binding (Model to View) | Input рдореЗрдВ рд╕рд┐рд░реНрдл readonly value show (ng-bind ) |
ЁЯФД ng-bind
vs {{ expression }}
{{ name }} | ng-bind="name" |
---|---|
Expression format | Directive format |
рдХрднреА-рдХрднреА “flashing” рджрд┐рдЦрддрд╛ рд╣реИ | рдЬрд╝реНрдпрд╛рджрд╛ smooth рдФрд░ fast |
<p ng-bind="yourName"></p>
ЁЯза рдПрдХ рдФрд░ Example: Calculator
<div ng-app="">
<input type="number" ng-model="num1">
+
<input type="number" ng-model="num2">
=
{{ num1 + num2 }}
</div>
Output рдореЗрдВ рдЬреИрд╕реЗ рд╣реА рдЖрдк num1 рдФрд░ num2 change рдХрд░реЗрдВрдЧреЗ, sum рднреА automatic change рд╣реЛрдЧрд╛ред
ЁЯТб Why is Two-Way Binding Powerful?
- рдХреЛрдИ рднреА manual DOM update рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛
- Real-time data reflection
- Code рдХрдо рдФрд░ рд╕рд╛рдлрд╝
- Forms рдХреЛ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди
ЁЯзк рдЕрднреНрдпрд╛рд╕ рдкреНрд░рд╢реНрди (Exercise)
- AngularJS рдореЗрдВ
ng-model
рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? - Two-way рдФрд░ one-way data binding рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
- рдиреАрдЪреЗ рджрд┐рдП рдЧрдП code рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
<input ng-model="a">
<input ng-model="b">
<p>{{ a * b }}</p>
тЬЕ рдЖрдкрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛?
- AngularJS Data Binding рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
- Two-Way vs One-Way Binding
ng-model
,ng-bind
, рдФрд░{{ }}
рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ- Real-life examples рдФрд░ рдЕрднреНрдпрд╛рд╕
ЁЯОп рдЕрдм рдЖрдкрдХрд╛ UI рдФрд░ Data рджреЛрдиреЛрдВ рдЖрдкрд╕ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬреБрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВ!