一、自定義指令
文法:
var app = angular.module('myModule',['ng']);
app.directive(name,fn);
自定義指令:
restrict:'EACM'
E-->Element 元素
A-->Attribute 屬性
C-->Class
M-->Comment 注釋(在指令中添加一個屬性:replace:true)
新指令的命名:
①駝峰式
②字首一般是公司或者項目的簡寫,字尾一般是指令的作用
③使用指令: tsHello--->ts-hello
在第二個參數 指定一個方法,在方法中傳回一個對象設定指令。對象中template、restrict、replace、scope。。。
總結:如果要參數的傳遞,需要在建立指令的時候,加上scope,同時指定對應的屬性的名稱(testName),在使用指令的時候,需要加上對應的屬性(test-name='')
二、雙向資料綁定
1、方向1的綁定(Model資料 綁定到View)
實作方法:{{name}}、常用指令(ngRepeat/ngBind/ngIf...)
相比DOM操作:先去查找元素,再去設定元素,隻需要把model資料綁定視圖上,資料改,視圖就會更新。
2、方向2的綁定(将View資料綁定到Model資料)
實作方法隻有一種方式: ng-model
<input type='text' ng-model='myText'/>
$scope.$watch('模型變量名',function(){})
三、過濾器
過濾器是用在表達式中,實作對表達式結果的篩選、過濾、格式化,達到更好的表現效果
文法:|--》管道
{{表達式 | 過濾器1:'name' | 過濾器2 }}
currency 貨币樣式的過濾器
date 日期
uppercase
lowecase 大小寫的轉換
orderBy 升序或者降序 orderBy:'age':true
limitTo 限定顯示的數量
number 限制顯示小數點後幾位
四、常用函數
forEach
uppercase/lowercase
toJson/fromJson
序列化:将一個json對象轉換為json格式的字元串
反序列化:将一個json格式的字元串 轉換為json格式的對象
五、服務
在ng中 服務 是 一種單例對象,所謂單例,服務在每一個應用中隻會被執行個體化一次。
功能:為應用提供資料和對象
兩大類:①内置的服務 ②自定義服務
1、内置的服務的使用方法
如果在控制器中,使用ng中内置的服務,需要在控制器的回調函數中
①将對應的服務給注入進來
②使用服務所提供的資料和對象
app.controller('myCtrl',function($scope,$location){
var url = $location.absUrl();
});
2、控制器和作用範圍
$scope與$rootScope:
$scope是$rootScope的子作用域控制對象,$rootScope的id為1,其他的為2,3....
不同的控制器之間,所對應的作用域控制對象($scope),之間是互相隔離的,如果要共享資料,怎麼辦?
借助$rootScope這個根作用域控制對象來實作。
如果父作用域對象想要調用子作用域對象的變量或者方法,ng提供了2個方法:
①$broadcast 将事件從父親傳遞給子級
$scope.$broadcast(eventName,data);
②$emit 将事件從子級傳遞給父親
$scope.$emit(eventName,data);
接收:
$scope.$on(eventName,function(event,data){
})