數據綁定:模型數據與視圖位置的關聯關係;javascript
模板引擎 <script type=’text/template’></script>php
單向數據綁定 從模型到視圖 ng-bind 或者 {{}} {{}}會有閃爍現象;添加ng-cloak能夠解決閃爍 經過ng-bind-template能夠綁定多個數據css
模型數據經過一個內置服務$scope來提供,這個$scope是個空對象;經過爲這個對象添加屬性或者方法即可以在相應的視圖模板裏被訪問java
雙向數據綁定 便可從模型到視圖;又可從視圖到模型(須要藉助表單元素;而且只能是表單元素input select textarea);ng-model=’msg’angularjs
視圖上有’msg’;就會關聯或者綁定到模型上 $scope.msgajax
$scope是個空對象,經過在視圖上給其關聯屬性或者方法;在model中就能夠獲取到;api
視圖上要產生數據或者要變化數據須要藉助表單元素數組
注意點:1表單元素 2 ng-model指令 3app
案例解釋: 框架
ng-app 不能寫到head中
1初始化$scope
1 ng-init=」name=’wjx’;age=’25’」 (瞭解)
2 $scope.name
2 在視圖裏面添加了 在模型上添加single這樣的方法
3 事件擴展 ng-click ng-dblclick ng-blur ng-mouseout
4 遍歷
<ul>
<li ng-repeat=’(key,star) in stars ’>{{star.name}}{{star.age}}</li>
</ul>
經過ng-repeat能夠將數組或對象數據迭代到視圖模板中,ng-switch、on、ng-switch-when能夠對數據進行篩選。
ng-switch on ng-switch-when 知足條件顯示 不知足不顯示
<li ng-repeat=’item in items’ ng-switch=’item’>
//<li ng-repeat=’item in items’ ng-switch on=’item’>
<span ng-switch-when=’css’>{{item}}</span>
</li>
做用域的產生:一個angular應用是由多個視圖構成的,視圖有又是指的是HTML元素,一般HTML元素會發生嵌套;另外一方面視圖又屬於某個控制器,進而控制器之間也產生了嵌套;
每一個控制器對應一個視圖,也就是$scope對象,不一樣層級控制器下的$scope便產生了做用域;
新建一個函數就會產生一個新的做用域,而且子做用域能夠訪問父級做用域,父級不能訪問本身做用域;
ng-app不能嵌套 ng-controller 能夠嵌套
經過ng-controller指令能夠建立一個子做用域,新建的做用域能夠訪問其父做用域的數據。
currency 貨幣單位: <li> {{price|currency:’¥’}}</li>
date 日期處理: {{now|date:’yyyy-MM/dd hh:mm:ss’}} $scope.now=new Date();
filter 在給定數組中選擇知足條件的子集,而且返回一個知足條件的數組;條件能夠是string object function;
Json 將JavaScript對象轉換成 JSON格式的字符串;
limitTo 截取 {{items|limitTo:2} {{items|limitTo:-1}倒着截取
uppercase / lowercase 將文本轉化成大寫/小寫形式 {{str|uppercase}}
number 數字格式化,可控制小數位數,將字符串轉化成數子,默認保留三位小數,四捨五入; 裏面不能有字符,內部使用Number原理實現,可傳參 {{str|number:2}}
Number()、裏面不能包含非數字字符,不然返回NAN, ‘10.5’ ==> 10.5
parseInt():通常用於取整;從左往右截取,必須以數字或者負號開頭,不然返回NAN;直到遇到非數字字符(包括小數點)中止; ‘10.5px’ ==> 10
parseFloat() ‘10.5px’ ==> 10.5
orderby 對數組進行排序,第二個參數可控制方向 默認false(升序) ture(倒序) 按照 ASCA碼排序, abc 123
App.directive();自定義指令 自定義方法如要使用,就一種可能:傳參數
App.filter(); 自定義過濾器; |調用 : 傳參
App.controller(); 自定義控制器;
方法:使用回調函數,在回調函數中return一個方法function,這個方法是你自定義邏輯
傳遞的是返回來的function;
App.directive(‘name’,function(){
Return{
}
})
App.filter(‘demo’,function(){
Return function(){
}
})
自定義過濾器之首字母大寫
App.filter(‘capitalize’,function(){
Return function(input){
return Input[0].toUpperCase()+input.slice(1);
}
})
調用:<h4>{{info|capitalize}}</h4>
App.controller(‘DemoController’,[‘$scope’,function(){
}]);
基本理解: 查找依賴,並注入給你;
angualrJS這個框架,在定義之初作好了一些基礎性的任務,而且這些基礎性的任務能實現複用,作成了獨立的模塊,在咱們使用哪一個模塊的時候,直接調用它就能夠發揮做用了;而且這些模塊獨立沒法完成一些具體的業務,只有相互組合才能發揮更好的做用;
開發者在使用其開發時,就須要使用angular事先提供的模塊,開發本身的業務邏輯,
自定義控制器:
行內式注入:
App.controller(‘DemoController’,[ ‘$scope’, ‘$http’ function($scope,$http){
// [ ] 數組來實現依賴注入;告訴angualr造控制器須要$scope ,找見以後
//angularjs 經過回調函數的實參交還給你,須要有個形參$scope接收
}])
推斷式依賴注入:
App.contoller(‘DemoController’,function($scope,$http){
//angualrJS 猜想你是否是須要$scope和$http這兩個模塊,找到之後傳遞給你
//存在問題 :在上線時,代碼壓縮,長變量名會變成a/b/c; angularjs找不到a/b模塊;會出錯
})
9 服務:
服務是一個對象或者函數;對外提供特殊的功能;
這個對象暴露一些屬性或者一些方法,這些方法能夠實現想要的功能
內置服務:
模塊依賴:
Var App=angular.module(‘App’,[ ]);
$location
是angularjs提早封裝好的;提供獲取地址相關的服務
是對原生javascript中location對象屬性和方法的封裝;
App.controller(‘Democontroller’,[‘$scope’,’$location’,function($scope,$location){
$scope.absUrl=$location.absUrl(); //絕對路徑
$scope.url=$location.url(); //是錨點地址後面的
$scope.host
}])
http:// 協議 protocol
www.baidu.com / 124.12.134.12 主機
: 8080 端口號(默認省略)
# 錨點 hash
?name=wjx&age=25 查詢參數(querystring)
angularJS中的search 用來獲取傳遞的參數的,問號以後的name=wjx&age=25
與原生的不同;是爲了開發單頁面應用纔去作的
Hostname 域名 ===>localhost
href
使用:要用那個服務,在控制器裏面的數組裏面依賴那個服務,而且在回調函數裏面接收哪一個服務;
App.controller(‘DemoController’,[‘$scope’,’$timeout’,’$interval’,function($scope,$timeout,$interval){
$timeout(function(){
$socpe.msg=’執行哦’
},2000);
Var timer= $inerval(function(){
$scope.now=new Date();
},1000)
//清除定時器
$scope.stope=function(){
$interval.cancel(timer);
}
}])
數據能夠在視圖層面格式化,又能夠模型層面格式化;$filter函數傳遞不一樣參數,就表明不一樣的過濾器;
$scope.str = $filter(‘九種過濾器’)(能夠傳參數);
裏面傳哪一種過濾器,就返回那個函數;
App.controller(‘DemoController’,[‘$scope’,’$filter’,function(){
Function($scope,$filter){
$scope.price =11.11;
Var currency=$filter(‘currency’);
$scope.price=currency($scope.price);
$scope.str=’hello angular’;
Var uppercase$filter(‘uppercase’);
$scope.str=uppercase($scope.str);
$scope.str1 = $filter(‘limitTo’)($scope.str,2);
}
}]);
App.controller(‘DemoController’,[‘$log’,function($log){
$log.info(‘普通訊息’);
$log.warning(‘警告信息’);
$log.error(‘錯誤信息’);
$log.log(‘打印信息’);
$log.debug(‘調試信息’);
$log.http()
}])
$http是對 XMLHttpRequest對象的封裝;和ajax相似;
$http({
url: ’example.php’,
Method : ’get ’ ,
Headers: {
‘Content-type’:’application/x-www-form-urlended’
},
params : { //get參數
name : ‘wjx’
},
data : { //post 傳參
age : 10
}
}).success(function (info){
//info 就是返回的數據
});