1. 程式人生 > >AngularJs1學習筆記:指令

AngularJs1學習筆記:指令

AngularJS 通過被稱為 指令 的新屬性來擴充套件 HTML。
AngularJS 通過內建的指令來為應用新增功能。
AngularJS 允許你自定義指令。

AngularJS 指令是擴充套件的 HTML 屬性,帶有字首 ng-

ng-app

指令初始化一個 AngularJS 應用程式。,標記AngularJs的範圍,這個範圍內AngularJs可以識別。一般放在html標籤裡,整個html一個就好,多了也只是第一個有作用,值一般不要為空。

這裡寫圖片描述

ng-init

指令初始化應用程式資料,基本寫法就是ng-init=”xxx=’xxx’”,有多個元素的時候,以”;”間隔

<div ng-init="name='HAHA';age='100'">
  <p>姓名:{{name}},年齡:{{age}}</p>
  <!--顯示:姓名:HAHA,年齡:100-->
</div>

ng-model

指令把元素值(比如輸入域的值)繫結到應用程式。

<div ng-init="name='HAHA';age='100'">
  <p>姓名:{{name}},年齡:{{age}}</p>
  <input ng-model="name"></input
>
</div>

這裡寫圖片描述

ng-bind

這個指令也是用來繫結資料。


<div ng-init="name='HAHHA'">
  <p ng-bind="name"></p>
</div>

ng-model是用於表單元素的,支援雙向繫結。對普通元素無效;
ng-bind用於普通元素,不能用於表單元素
當ng-bind和{{}}同時使用時,ng-bind繫結的值覆蓋該元素的內容。

<div ng-init="name='HAHHA';age='122'">
  <p ng-bind
="age">
{{name}}</p> </div> 這個最後只會顯示122

ng-repeat

指令對於集合中(陣列中)的每個項會 克隆一次 HTML 元素。看一下列子。
這裡寫圖片描述
從圖上可以看出,是建立了2個ul,然後資料顯示在li上,可以加個背景顏色看一下
這裡寫圖片描述

html:


<div ng-controller="MainController">

  <ul ng-repeat="m in emails">
    <li>{{$index+1}}:</li>
    <li>{{m.id}}</li>
    <li>{{m.name}}</li>
    <li>{{m.message}}</li>
  </ul>

</div>

js

 //郵件
  var messages=[{
    id:100,
    name:"哈哈哈",
    message:"今天星期五啊,明天不上班。"
  },{
    id:300,
    name:"豬八戒",
    message:"約了師兄逛公園"
  }];
  app.controller('MainController',function($scope){
    console.log(messages);
    $scope.emails =messages;
  });

自定義指令

  app.directive('myDirective',function(){
    return{
      template:"<p>這是一個自定義指令</p>"
    }

  });

使用的時候可以這樣的使用,會輸出 這是一個自定義指令

<my-directive></my-directive>

有關指令的使用有多種方法,具體通過restrict 的值來判斷

 app.directive('myDirective',function(){
    return{
      restrict : "E",//元素名使用
      template:"<p>這是一個自定義指令</p>"
    }

  });

1.作為元素名使用


 restrict : "E",//元素名使用
<my-directive></my-directive>

2.作為屬性使用

 restrict : "A",//屬性使用
<div my-directive></div>

3.作為類名使用

 restrict : "C",//類名使用
<div class="my-directive"></div>

4.作為註釋使用

 restrict : "M",//作為註釋名使用
  replace : true//這個要加上否則註釋使用沒效果
<!-- directive:my-directive -->

指令的名稱是區分大小寫的。大家可以試試指令名稱是myDDirective的時候用什麼方式才會有效。

以上,不對的地方請指出謝謝