javascript
AngularJS小结
前段時間做AngularJS的經驗總結,這里和大家分享一下:
使用AngularJS的目的是構建一個單頁應用,一直是局部刷新,可以達到類似客戶端的效果
指令主要參數:
restrict : E(元素),A(屬性),C(類名),M(注釋),默認為EA
template :? 指令鏈接DOM模板,例如“<h1>{{head}}</h1>”
templateUrl:替代template,指定模版路徑
replace :指令鏈接模板是否替換原有元素,默認false
scope :有三種參數
- false :共享父域
- true :繼承父域,但新建獨立作用域
- 對象{} :獨立作用域,有三種綁定策略實現數據傳遞
- @單向綁定,使用時加{{}}
- =雙向綁定
- &函數綁定
require : 用于指令和指令之間進行通訊,在使用require指定依賴后,link函數的第四個參數就是所依賴的控制器
require: '?^teacher'這里的問號和^號是尋找策略,前者表示沒有找到則置為null,后者表示在自身指令尋找指令名稱的同時,向上父元素尋找
controller :賦予指令控制器,是用來定義其內部作用域的行為的
link :描述指令元素操作行為,先執行controller設置各個作用域的scope,執行link,設置DOM的各個行為
?
Controller間調用方法 :
使用消息機制,$scope.$emit(EVENT.SUCEESS,{});其父controller如下
$scope.$on(EVENT.SUCEESS, function (event, args) {});
?
Controller間數據共享 :
使用服務做橋梁,因為服務是單例的,多個controller間訪問的是同一份數據,設置好服務getter和setter方法,在任何需要這個數據的地方注入這個服務
angular.factory('sharedList',function() {var list = [];return {addItem: addItem,getList: getList}function addItem(item) {list.push(item);}function getList() {return list;} });
在定義模塊,service,controller等時最好使用依賴注入,減少模塊間的耦合
app.controller('worldCtrl',['$scope','$http',function($scope, $http){
?????// ...
}]);
或者myCtrl.$inject = ['$scope', ''];這樣顯式注入
?
設置延時操作是使用angularjs自帶的$timeout而不是setTimeout,后者對scope的修改不會觸發更新,使用
$timeout.cancel(promise對象)取消一個timeoutvar a= $timeout(function(){console.log('執行$timeout回調');return'angular'; }, 1000);
通過ngResource來調用restful服務接口,而不是僅僅使用$http,它只適合處理一些簡單的請求,可以定義
資源在服務端的URL,常用的請求參數類型,一些附加的方法,期望獲得的響應類型等等這些
如下是ngResource的一個簡單例子:
myAppModule.factory('CreditCard',['$resource',function($resource) {return $resource('/usr/:userId/card/:cardId',{userId: 123, cardId:'@id'},{charge: {method:'POST', params: {charge:true}, isArray: false}); }]);
通過CreditCard.get({id : 11})則會生成/user/123/card/11的資源URL
?
UI Bootstrap的使用,由于項目中不用jQuery,所以無法直接使用BootStrap,該項目為每個Bootstrap JS組件添加了內置指令,只需要Bootstrap CSS就可以實現BootStrap的樣式。
?
總結
以上是生活随笔為你收集整理的AngularJS小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PP视频如何设置关闭的时候直接退出程序
- 下一篇: AngularJS+Jersey下载ex