Angular JS Tutorial

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 BindingModel рдФрд░ 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 formatDirective 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)

  1. AngularJS рдореЗрдВ ng-model рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
  2. Two-way рдФрд░ one-way data binding рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП 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 рджреЛрдиреЛрдВ рдЖрдкрд╕ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬреБрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВ!