AngularJS 經過新的屬性和表達式擴展了 HTML。html
AngularJS 是一個 JavaScript 框架,它是一個以Javascript編寫的庫,它可經過 <script> 標籤添加到 HTML 頁面。java
Angular Js是一個Javascript框架,git
AngularJS 能夠構建一個單一頁面應用程序(SPAs:Single Page Applications)。angularjs
注:咱們建議把腳本放在 <body> 元素的底部。這會提升網頁加載速度,由於 HTML 加載不受制於腳本加載。github
各個 angular.js 版本下載: https://github.com/angular/angular.js/releasesexpress
AngularJS 是比較新的技術,版本 1.0 是在 2012 年發佈的。bootstrap
AngularJS 是由 Google 的員工 Miško Hevery 從 2009 年開始着手開發。數組
該項目目前已由 Google 正式支持,有一個全職的開發團隊繼續開發和維護這個庫。app
AngularJS 使得開發現代的單一頁面應用程序(SPAs:Single Page Applications)變得更加容易。框架
AngularJS 經過 ng-directives 擴展了 HTML。
AngularJS 表達式寫在雙大括號內:{{ expression }}。
ng-app 指令定義一個 AngularJS 應用程序。
ng-model 指令把元素值(好比輸入域的值)綁定到應用程序。
ng-bind 指令把應用程序數據綁定到 HTML 視圖。
<div ng-app=""> <p>名字 : <input type="text" ng-model="name"></p> <h1>Hello {{name}}</h1> // 此處爲angular表達式用雙大括號包裹 </div>
注意: 須要引入angularjs插件庫 經過javascrit的src屬性引入
1.ng-app是一個特殊的指令,一個HTML文檔只出現一次,如出現屢次也只有第一個起做用;ng-app能夠出如今html文檔的任何一個元素上。
2.ng-app做用:告訴子元素指令是屬於angularJs。
3.ng-app的值能夠爲空(練習),項目中必定要賦值,後面所說的模塊。
一個頁面裏建立多個 ng-app 手動加載便可:
var app1 = angular.module("app1", []); //自動加載
var app2 = angular.module("app2", []); //手動加載
// 頁面加載完成後,再加載模塊 angular.element(document).ready(function() {
//手動加載myApp2 ng-app
angular.bootstrap(document.getElementById("myApp2"), ['myApp2'])
})
AngularJS 表達式寫在雙大括號內:{{ expression }}。
AngularJS 表達式把數據綁定到 HTML,這與 ng-bind 指令有殊途同歸之妙。
AngularJS 將在表達式書寫的位置"輸出"數據。
AngularJS 表達式 很像 JavaScript 表達式:它們能夠包含文字、運算符和變量。
實例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}
5.1 AngularJS 數字
<div ng-app="" ng-init="quantity=1;cost=5"> <p>總價: {{ quantity * cost }}</p> </div>
5.2 AngularJS 字符串
<div ng-app="" ng-init="firstName='John';lastName='Doe'"> <p>姓名: {{ firstName + " " + lastName }}</p> </div>
5.3 AngularJS 對象
<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}"> <p>姓爲 {{ person.lastName }}</p> </div>
5.4 AngularJS 數組
<div ng-app="" ng-init="points=[1,15,19,2,40]"> <p>第三個值爲 {{ points[2] }}</p> </div>
使用 ng-bind 也能夠實現一樣的效果
<div ng-app="" ng-init="points=[1,15,19,2,40]">
<p>第三個值爲 <span ng-bind="points[2]"></span></p>
</div>
拓展:AngularJS 表達式 vs JavaScript 表達式
JavaScript 表達式與AngularJS 表達式同樣能夠包含字母,操做符,變量。
AngularJS 表達式能夠寫在 HTML 中。jascript表達式只能寫在script標籤中
AngularJS 表達式不支持條件判斷,循環及異常。JavaScript 表達式支持if判斷及for循環
AngularJS 表達式支持過濾器,JavaScript 表達式支持正則過濾
AngularJS 模塊(Module) 定義了 AngularJS 應用。
AngularJS 控制器(Controller) 用於控制 AngularJS 應用。
ng-app指令指明瞭應用, ng-controller 指明瞭控制器。
AngularJS 應用程序由 ng-app 定義。應用程序在 <div> 內運行。
ng-controller="myCtrl" 屬性是一個 AngularJS 指令。用於定義一個控制器。
myCtrl 函數是一個 JavaScript 函數。
AngularJS 使用$scope 對象來調用控制器。
在 AngularJS 中, $scope 是一個應用對象(屬於應用變量和函數)。
控制器的 $scope (至關於做用域、控制範圍)用來保存AngularJS Model(模型)的對象。
控制器在做用域中建立了兩個屬性 (firstName 和 lastName)。
ng-model 指令綁定輸入域到控制器的屬性(firstName 和 lastName)。
基本配置以下:
<div ng-app="myApp" ng-controller="myCtrl"> <!-- 此處myApp指向模塊應用 ng-controller 指令來添加應用的。控制器model中能夠有多個controller: --> 名: <input type="text" ng-model="firstName"><br> 姓: <input type="text" ng-model="lastName"><br> <br> 姓名: {{firstName + " " + lastName}} </div> <script> var app = angular.module('myApp', []); // 此處代碼標明建立了一個模塊,定義應用爲app myApp指向視圖層
// 在模塊定義中 [] 參數用於定義模塊的依賴關係。
// 中括號[]表示該模塊沒有依賴,若是有依賴的話會在中括號寫上依賴的模塊名字。
app.controller('myCtrl', function($scope) { // 給定義的模塊綁定控制器 myCtrl // $scope (至關於做用域、控制範圍 )用來保存AngularJS Model(模型)的對象。 $scope.firstName= "John"; $scope.lastName= "Doe"; }); </script>
拓展 關於 controller 中做用域的問題:
說明: controller 中,若是局部 $scope 和全局 $rootScope 都存在,且有相同名字的變量,{{變量名}} 指局部變量而不是全局變量,做用域只有當前 controller;{{$root.變量名}} 是全局變量,在 ng-app="" 下任何一個 controller 中都能使用。若是沒有 $scope, 只有 $rootScope,那麼 {{變量名}} 和 {{$root.變量名}} 就沒區別了。
<body ng-app="myApp"> <div ng-controller="myCtrl"> //輸出結果 {{first}}<br> //ctrl局部first {{$root.first}}<br> //全局first {{second}}<br> //全局second {{$root.second}}<br> //全局second </div> <br> <br> <div ng-controller="myCtrl2"> {{first}}<br> //全局first {{$root.first}}<br> //全局first {{second}}<br> //ctrl2局部second {{$root.second}} //全局second </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function ($scope,$rootScope) { $scope.first = 'ctrl局部first'; $rootScope.first = '全局first'; }); app.controller('myCtrl2', function ($scope,$rootScope) { $scope.second = 'ctrl2局部second'; $rootScope.second = '全局second'; }); </script>
AngularJS 經過被稱爲 指令 的新屬性來擴展 HTML。
AngularJS 經過內置的指令來爲應用添加功能。
AngularJS 容許你自定義指令。
AngularJS 指令是擴展的 HTML 屬性,帶有前綴 ng-。
ng-app 指令初始化一個 AngularJS 應用程序。ng-app 指令告訴 AngularJS,元素是 AngularJS 應用程序 的"全部者"。
ng-init 指令初始化應用程序數據。
ng-model 指令把元素值(好比輸入域的值)綁定到應用程序。