AngularJS

AngularJS — دایرکتیوها (Directives)

آخرین بروزرسانی: 1404/08/23

دایرکتیوها (Directives)

در AngularJS «دایرکتیو (Directive)» یعنی دستورهای افزایشی برای HTML. این دستورها با پیشوند ng- می آیند. آن ها رفتار می دهند و داده را وصل می کنند. مثل برچسب های راهنما روی دفتر مشق.

دایرکتیوهای پایه: ng-app ،ng-init ،ng-model

ng-app برنامه را شروع می کند. ng-init مقدار اولیه می دهد. ng-model ورودی را به داده وصل می کند.

<div ng-app="" ng-init="firstName='John'">
  <p>Name: <input type="text" ng-model="firstName"></p>
  <p>You wrote: {{ firstName }}</p>
</div>

مشاهده در ادیتور

بایندینگ داده (Data Binding)

«بایندینگ (Binding)» یعنی وصل کردن نمایش و داده. عبارت {{ firstName }} با ng-model هماهنگ می ماند.

<div ng-app="" ng-init="quantity=1;price=5">
  Quantity: <input type="number" ng-model="quantity">
  Costs: <input type="number" ng-model="price">
  Total in dollar: {{ quantity * price }}
</div>

مشاهده در ادیتور

تکرار عناصر با ng-repeat

ng-repeat یک عنصر را برای هر آیتم لیست کپی می کند. مثل فهرست حضور و غیاب.

<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
  <ul>
    <li ng-repeat="x in names">
      {{ x }}
    </li>
  </ul>
</div>

مشاهده در ادیتور

می توان روی آرایه ای از آبجکت ها هم تکرار کرد. هر بار نام و کشور نمایش می یابد.

<div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country:'Sweden'},{name:'Kai',country:'Denmark'}]">
  <ul>
    <li ng-repeat="x in names">
      {{ x.name + ', ' + x.country }}
    </li>
  </ul>
</div>

مشاهده در ادیتور

ساخت دایرکتیو دلخواه

با .directive می توان دایرکتیو جدید ساخت. نام تعریف شترمرغی است؛ فراخوانی با خط تیره.

<body ng-app="myApp">
  <w3-test-directive></w3-test-directive>
  <script>
    var app = angular.module("myApp", []);
    app.directive("w3TestDirective", function() {
      return {
        template: "<h1>Made by a directive!</h1>"
      };
    });
  <\/script>
</body>

مشاهده در ادیتور

روش های فراخوانی دایرکتیو

دایرکتیو می تواند با «عنصر»، «ویژگی»، «کلاس» یا «نظر» فراخوانی شود.

<w3-test-directive></w3-test-directive>

مشاهده در ادیتور

<div w3-test-directive></div>

مشاهده در ادیتور

<div class="w3-test-directive"></div>

مشاهده در ادیتور

<!-- directive: w3-test-directive -->

مشاهده در ادیتور

محدودیت ها با restrict

با گزینه restrict تعیین کن دایرکتیو چگونه فراخوانی شود. مقدارهای مجاز: E ،A ،C ،M.

var app = angular.module("myApp", []);
app.directive("w3TestDirective", function() {
  return {
    restrict: "A",
    template: "<h1>Made by a directive!</h1>"
  };
});

مشاهده در ادیتور

گام های عملی

  1. صفحه را با ng-app شروع کن.
  2. ورودی را با ng-model وصل کن.
  3. لیست را با ng-repeat تکرار کن.
  4. دایرکتیو دلخواه را با .directive بساز.

نکته: استفاده زیاد از ng-init معمول نیست. مقداردهی را در کنترلر انجام بده. برای ادامه، به مدل و ng-model برو. سپس بخش ماژول ها را مرور کن.

جمع بندی سریع

  • دایرکتیوها HTML را قوی تر می کنند.
  • ng-model داده و نمایش را همگام می کند.
  • ng-repeat برای لیست ها عالی است.
  • restrict نوع فراخوانی را محدود می کند.