AngularJS

AngularJS

AngularJS 是一個(gè) JavaScript 框架蹲姐。它可通過 <script> 標(biāo)簽添加到 HTML 頁面秃励。
AngularJS 指令是以 ng 作為前綴的 HTML 屬性劝堪。
AngularJS有很多的模塊和控制器晚岭,而每個(gè)模塊都對(duì)應(yīng)一個(gè)控制器嗤无,他們之間使用
Scope來進(jìn)行傳值壶愤,有一個(gè)根作用域rootScope麦轰,每個(gè)控制器都可以使用這個(gè)屬性乔夯。
控制器也可以從外部引用。
angular.module('myApp', []).controller('namesCtrl', function($scope) { 方法 });

模塊定義了一個(gè)應(yīng)用程序原朝。
模塊是應(yīng)用程序中不同部分的容器驯嘱。
模塊是應(yīng)用控制器的容器。
控制器通常屬于一個(gè)模塊喳坠。

引用:<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>

ng-app 指令告訴 AngularJS鞠评,<div> 元素是 AngularJS 應(yīng)用程序 的"所有者"。
ng-model 指令把輸入域的值綁定到應(yīng)用程序變量 name壕鹉。
ng-bind 指令把應(yīng)用程序變量 name 綁定到某個(gè)段落的 innerHTML剃幌。

AngularJs的主要使用是:
首先選中一個(gè)div,定義他的模塊(Module)和控制器(Controller);
<div ng-app="myApp" ng-controller="myCtrl">...</div>
然后在script里面進(jìn)行代碼書寫:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {$scope.firstName= "John"; $scope.lastName= "Doe";});

可以使用 ng-init=" 變量 字符串 對(duì)象 數(shù)組 "來初始化數(shù)據(jù)
數(shù)據(jù)的呈現(xiàn)有兩種方式:
- 通過大括號(hào)的方式包含住數(shù)據(jù)晾浴;
{{ quantity * cost }} ||| {{ firstName + " " + lastName }}
- 通過ng-bind來綁定數(shù)據(jù)到html中负乡;
ng-bind="person.lastName" ||| ng-bind="points[2]"

AngularJS 指令

完整的指令:http://www.runoob.com/angularjs/angularjs-reference.html

ng-app 指令初始化一個(gè) AngularJS 應(yīng)用程序。
ng-init 指令初始化應(yīng)用程序數(shù)據(jù)脊凰。
ng-model 指令把元素值(比如輸入域的值)綁定到應(yīng)用程序抖棘。
ng-bind 指令把數(shù)據(jù)和元素綁定在一起。
ng-repeat 指令把數(shù)據(jù)循環(huán)輸出狸涌。
ng-repeat="x in names"然后把x綁定在html中切省,也可以循環(huán)對(duì)象數(shù)組。

》》ng-model指令的擴(kuò)展:《《
ng-model 指令根據(jù)表單域的狀態(tài)添加/移除以下類:
ng-valid ---當(dāng)表單中輸入內(nèi)容之后此方法為true
ng-invalid ---當(dāng)表單中未輸入內(nèi)容的時(shí)候此方法為true
ng-pristine ---當(dāng)用戶未修改表單的時(shí)候發(fā)生
ng-touched ---- 當(dāng)與用戶交互之后發(fā)生
ng-untouched ----當(dāng)沒有與用戶進(jìn)行交互的時(shí)候發(fā)生
ng-dirty ----當(dāng)表單中的值發(fā)生改變的時(shí)候
ng-pending ---
ng-empty ---
ng-not-empty ---
ng-blur ------當(dāng)這個(gè)元素失去焦點(diǎn)的時(shí)候執(zhí)行其中的方法
ng-change ---當(dāng)輸入的值發(fā)生了修改之后發(fā)生
ng-checked ----用于設(shè)置復(fù)選框(checkbox)或單選按鈕(radio)的 checked 屬性帕胆。
ng-class 指令用于給 HTML 元素動(dòng)態(tài)綁定一個(gè)或多個(gè) CSS 類朝捆。
ng-class-even 指令用于為 HTML添加CSS 類,但只作用于偶數(shù)行懒豹,需要與 ng-repeat 指令搭配使用
ng-class-odd 指令用于為 HTML 添加 CSS 類芙盘,但只作用于奇數(shù)行,需要與 ng-repeat 指令搭配使用
ng-cloak 指令用于在 AngularJS 應(yīng)用在加載時(shí)防止 AngularJS 代碼未加載完而出現(xiàn)的問題脸秽。
ng-controller 指令用于為你的應(yīng)用添加控制器
ng-copy 指令用于告訴 AngularJS 在 HTML 元素文本被拷貝時(shí)要執(zhí)行的操作儒老。
ng-dblclick 指令用于告訴 AngularJS 在鼠標(biāo)鼠標(biāo) HTML 元素時(shí)需要執(zhí)行的操作。

自定義指令:
你可以使用 .directive 函數(shù)來添加自定義的指令豹储。
使用自定義的指令有四種方式:元素名 贷盲, 屬性 , 類名, 注釋巩剖。
也可以指定一個(gè)自定義命令的使用方式铝穷,通過 restrict 屬性
-E 作為元素名使用
-A 作為屬性使用
-C 作為類名使用
-M 作為注釋使用

         自定義指令
   <body ng-app="myApp"  ng-controller="myCtrl" >   ----初始化ng-app 指定控制器
    <runoob-directive></runoob-directive>  ---元素名
    <div runoob-directive></div>    ----屬性
    <div class="runoob-directive"></div>    ---類名
    <!-- directive: runoob-directive -->   ----注釋
    <script>
     var app = angular.module("myApp", []);   ---關(guān)聯(lián)html
     app.directive("runoobDirective", function() {    ---創(chuàng)建自定義指令
     return {
       restrict : "A",   -----指定使用的方式
       template : "<h1>自定義指令!</h1>"   ----自定義指令的模版
         };
     });
     app.controller('myCtrl', function($scope) {    ---- 控制器:進(jìn)行數(shù)據(jù)的運(yùn)算
      $scope.firstName= "John";
      $scope.lastName= "Doe";
     });
    </script></body>

Scope(作用域) 是應(yīng)用在 HTML (視圖) 和 JavaScript (控制器)之間的紐帶。
Scope 是一個(gè)對(duì)象佳魔,有可用的方法和屬性曙聂。
Scope 可應(yīng)用在視圖和控制器上。
方法:$scope.fullName = function() { return $scope.firstName + " " + $scope.lastName;}

根作用域
所有的應(yīng)用都有一個(gè) rootScope鞠鲜,它可以作用在 ng-app 指令包含的所有 HTML 元素中宁脊。
$rootScope 可作用于整個(gè)應(yīng)用中。是各個(gè) controller 中 scope 的橋梁贤姆。用 rootscope 定義的值榆苞,可以在
各個(gè) controller 中使用。rootscope設(shè)置的變量在所有controller里面都是可以直接用{{root.變量名}}來顯示
的霞捡,當(dāng)然也可以賦值給scope.

AngularJS 過濾器

過濾器可以通過一個(gè)管道字符(|)和一個(gè)過濾器添加到表達(dá)式中坐漏。
{{ lastName | uppercase }} ----把數(shù)據(jù)轉(zhuǎn)化為大寫;
{{ lastName | lowercase }} ---把數(shù)據(jù)轉(zhuǎn)化為小寫碧信;
(quantity * price) | currency }} ---把數(shù)據(jù)轉(zhuǎn)換為貨幣赊琳;

過濾器可以通過一個(gè)管道字符(|)和一個(gè)過濾器添加到指令中。
orderBy 過濾器根據(jù)表達(dá)式排列數(shù)組:ng-repeat="x in names | orderBy:'country'"
orderBy 根據(jù)后面的變量對(duì)數(shù)組進(jìn)行排序處理砰碴。
filter 過濾器從數(shù)組中選擇一個(gè)子集:ng-repeat="x in names | filter:test | orderBy:'country'"
fillter 意思就是根據(jù)輸入的數(shù)據(jù)在數(shù)組中進(jìn)行查找可以匹配的子集躏筏。

可以自定義過濾器:
app.filter('reverse', function() { ---可以注入依賴
return function(text) {
return text.split("").reverse().join("");
}
}); ----定義一個(gè)名字為reverse的過濾器:反轉(zhuǎn)字符串

AngularJS 服務(wù)(Service)----------待完善……

在 AngularJS 中,服務(wù)是一個(gè)函數(shù)或?qū)ο蟪释鳎稍谀愕?AngularJS 應(yīng)用中使用趁尼。
AngularJS 內(nèi)建了30 多個(gè)服務(wù)。

AngularJS當(dāng)中的http服務(wù):

  // 簡(jiǎn)單的 GET 請(qǐng)求猖辫,可以改為 POST
    $http({
        method: 'GET',
        url: '/someUrl'
    }).then(function successCallback(response) {
            // 請(qǐng)求成功執(zhí)行代碼
        }, function errorCallback(response) {
            // 請(qǐng)求失敗執(zhí)行代碼
    });
        //get和post請(qǐng)求的簡(jiǎn)寫方法
      $http.get('/someUrl', config).then(successCallback, errorCallback);
      $http.post('/someUrl', data, config).then(successCallback, errorCallback);

AngularJS Select(選擇框)

使用 ng-options 創(chuàng)建選擇框:
<select ng-init="selectedName = names[0]" ng-model="selectedName" ng-options="x for x in names"></select>
使用ng-options指令來循環(huán)數(shù)組names存儲(chǔ)在x變量中弱卡,然后從他上面提取x。

使用ng-repeat 指令來創(chuàng)建下拉列表:
<select>
<option ng-repeat="x in names">{{x}}</option> ----列表項(xiàng)
</select>

當(dāng)循環(huán)的數(shù)據(jù)為一個(gè)數(shù)組的時(shí)候:
<select ng-model="selectedSite" ng-options="x.site for x in sites">
</select>
<h1>你選擇的是: {{selectedSite.site}}</h1>
<p>網(wǎng)址為: {{selectedSite.url}}</p>
$scope.sites = [
{site : "Google", url : "http://www.google.com"},
{site : "Runoob", url : "http://www.runoob.com"},
{site : "Taobao", url : "http://www.taobao.com"}
];
使用ng-options指令來循環(huán)數(shù)組sites住册,存儲(chǔ)在x中,而for前面的值為下拉列表中顯示的數(shù)據(jù)瓮具,

當(dāng)循環(huán)的數(shù)據(jù)為一個(gè)對(duì)象的時(shí)候:
<select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars"></select>
<p>你選擇的是: {{selectedCar.brand}}</p>
<p>型號(hào)為: {{selectedCar.model}}</p>
<p>顏色為: {{selectedCar.color}}</p>
$scope.cars = {
car01 : {brand : "Ford", model : "Mustang", color : "red"},
car02 : {brand : "Fiat", model : "500", color : "white"},
car03 : {brand : "Volvo", model : "XC90", color : "black"}
}
使用ng-options來循環(huán)對(duì)象荧飞,for后面的小括號(hào)中變量代表的是,健和值名党。

使用ng-options來設(shè)置下拉列表的時(shí)候叹阔,for前面的值只是下拉列表中顯示的選項(xiàng),而for后面的值分為兩種情況传睹,當(dāng)循環(huán)的數(shù)組的時(shí)候耳幢,直接一個(gè)變量代表的是數(shù)組中的每一個(gè)值,當(dāng)循環(huán)的是一個(gè)對(duì)象的時(shí)候,for后面的小括號(hào)中有兩個(gè)變量名睛藻,分別是鍵和值启上。也就是對(duì)象中的名字和屬性。

AngularJS 表格

ng-repeat 指令可以完美的顯示表格:
<table>
<tr ng-repeat="x in names">
<td>{{ $index + 1 }}</td> -----顯示序號(hào)
<td>{{ x.Name }}</td>
<td>{{ x.Country }}</td>
</tr>
</table>
每一行循環(huán)一個(gè)數(shù)據(jù)店印,也可以給table添加樣式冈在。

AngularJS 事件

ng-show 指令 為true的時(shí)候顯示元素
<p ng-show="true">顯示</p>
ng-hide 指令 為 true的時(shí)候隱藏元素
<p ng-hide="true">隱藏</p>
ng-click指令 點(diǎn)擊事件
<button ng-click="count = count + 1">點(diǎn)我</button> ----點(diǎn)擊增加數(shù)量

AngularJS 表單

以下 HTML input 元素被稱為 HTML 控件:

input 元素
select 元素
button 元素
textarea 元素
Input 控件使用 ng-model 指令來實(shí)現(xiàn)數(shù)據(jù)綁定。
checkbox 的值為 true(選中) 或 false按摘,可以使用 ng-model 指令綁定;
單選框使用同一個(gè) ng-model 包券,可以有不同的值,但只有被選中的單選按鈕的值會(huì)被使用炫贤。
下拉菜單同樣也可以綁定值溅固。

表單的驗(yàn)證:

<input type="text" name="user" required > required-----意思是必填字段
ng-disabled="true" 禁用或者使用輸入框或者是按鈕,直接加入到標(biāo)簽中

AngularJS動(dòng)畫

引入動(dòng)畫:
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular-animate.min.js"></script>

動(dòng)畫的使用需要先加入到模型中兰珍,直接設(shè)置為應(yīng)用名ng-app="ngAnimate"
也可以加入到模型中侍郭,var app = angular.module('myApp', ['ngAnimate']);
如果需要隱藏一個(gè)元素,需要給他添加動(dòng)畫transition俩垃。然后設(shè)計(jì)隱藏時(shí)的動(dòng)畫 .ng-hide{ 動(dòng)畫效果 }

.ng-hide {   //隱藏動(dòng)畫效果
  height: 0;    //寬邊為0
  width: 0;      //高變?yōu)?
  background-color: transparent;  //背景顏色透明
  top:-100px;    //上移100px
  left: 200px;     //距離左邊200px
}

AngularJS 指令

ng-app | 定義應(yīng)用程序的根元素励幼。 |
ng-bind | 綁定 HTML 元素到應(yīng)用程序數(shù)據(jù) |
ng-blur | 規(guī)定 blur 事件的行為 |
ng-focus | 規(guī)定聚焦事件的行為 |
ng-change | 規(guī)定在內(nèi)容改變時(shí)要執(zhí)行的表達(dá)式 |
ng-checked | 規(guī)定元素是否被選中 |
ng-class | 指定 HTML 元素使用的 CSS 類 |
ng-class-even | 類似 ng-class,但只在偶數(shù)行起作用 |
ng-class-odd | 類似 ng-class口柳,但只在奇數(shù)行起作用 |
ng-click | 定義元素被點(diǎn)擊時(shí)的行為 |
ng-cloak | 在應(yīng)用正要加載時(shí)防止其閃爍 |
ng-controller | 定義應(yīng)用的控制器對(duì)象 |
ng-copy | 規(guī)定拷貝事件的行為 |
ng-csp | 修改內(nèi)容的安全策略 |
ng-cut | 規(guī)定剪切事件的行為 |
ng-dblclick | 規(guī)定雙擊事件的行為 |
ng-disabled | 規(guī)定一個(gè)元素是否被禁用 |
ng-hide | 隱藏或顯示 HTML 元素 |
ng-href | 為 the <a> 元素指定鏈接 |
ng-if | 如果條件為 false 移除 HTML 元素 |
ng-init | 定義應(yīng)用的初始化值 |
ng-keydown | 規(guī)定按下按鍵事件的行為 |
ng-keypress | 規(guī)定按下按鍵事件的行為 |
ng-keyup | 規(guī)定松開按鍵事件的行為 |
ng-list | 將文本轉(zhuǎn)換為列表 (數(shù)組) |
ng-model | 綁定 HTML 控制器的值到應(yīng)用數(shù)據(jù) |
ng-model-options | 規(guī)定如何更新模型 |
ng-mousedown | 規(guī)定按下鼠標(biāo)按鍵時(shí)的行為
ng-mouseenter | 規(guī)定鼠標(biāo)指針穿過元素時(shí)的行為 |
ng-mouseleave | 規(guī)定鼠標(biāo)指針離開元素時(shí)的行為 |
ng-mousemove | 規(guī)定鼠標(biāo)指針在指定的元素中移動(dòng)時(shí)的行為 |
ng-mouseover | 規(guī)定鼠標(biāo)指針位于元素上方時(shí)的行為 |
ng-mouseup | 規(guī)定當(dāng)在元素上松開鼠標(biāo)按鈕時(shí)的行為 |
ng-non-bindable | 規(guī)定元素或子元素不能綁定數(shù)據(jù) |
ng-open | 指定元素的 open 屬性 |
ng-options | 在 <select> 列表中指定 <options> |
ng-paste | 規(guī)定粘貼事件的行為 |
ng-readonly | 指定元素的 readonly 屬性 |
ng-repeat | 定義集合中每項(xiàng)數(shù)據(jù)的模板 |
ng-selected | 指定元素的 selected 屬性 |
ng-show | 顯示或隱藏 HTML 元素 |
ng-src | 指定 <img> 元素的 src 屬性 |
ng-srcset | 指定 <img> 元素的 srcset 屬性 |
ng-style | 指定元素的 style 屬性 |
ng-submit | 規(guī)定 onsubmit 事件發(fā)生時(shí)執(zhí)行的表達(dá)式 |
ng-switch | 規(guī)定顯示或隱藏子元素的條件 |
ng-value | 規(guī)定 input 元素的值 |

AngularJS API

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苹粟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跃闹,更是在濱河造成了極大的恐慌嵌削,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件望艺,死亡現(xiàn)場(chǎng)離奇詭異苛秕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)找默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門艇劫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惩激,你說我怎么就攤上這事店煞。” “怎么了风钻?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵顷蟀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我骡技,道長(zhǎng)鸣个,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮囤萤,結(jié)果婚禮上昼窗,老公的妹妹穿的比我還像新娘。我一直安慰自己阁将,他們只是感情好膏秫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著做盅,像睡著了一般缤削。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吹榴,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天亭敢,我揣著相機(jī)與錄音,去河邊找鬼图筹。 笑死帅刀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的远剩。 我是一名探鬼主播扣溺,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瓜晤!你這毒婦竟也來了锥余?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤痢掠,失蹤者是張志新(化名)和其女友劉穎驱犹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體足画,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雄驹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淹辞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片医舆。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖象缀,靈堂內(nèi)的尸體忽然破棺而出彬向,到底是詐尸還是另有隱情,我是刑警寧澤攻冷,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站遍希,受9級(jí)特大地震影響等曼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一禁谦、第九天 我趴在偏房一處隱蔽的房頂上張望胁黑。 院中可真熱鬧,春花似錦州泊、人聲如沸丧蘸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽力喷。三九已至,卻和暖如春演训,著一層夾襖步出監(jiān)牢的瞬間弟孟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工样悟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拂募,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓窟她,卻偏偏與公主長(zhǎng)得像陈症,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子震糖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容