angularjs的原始碼在整體上,與其它很多庫和框架一樣,是乙個自執行函式,其整體結構簡化如下:
(function
(window, document, undefined)
bindjquery()
;//繫結jquery
publishexternalapi(angular)
;//對外公布angularjs的函式
jqlite(document).ready(function
() );})
(window, document)
;
整體思路
該方法主要是繫結jquery,簡化後的**如下:
var bindjqueryfired = false;
function bindjquery()
var jqname = jq();
jquery = window.jquery;
if (isdefined(jqname))
if (jquery && jquery.fn.on) else
angular.element = jqlite;//具體意義看腳注
bindjqueryfired = true;
}
檢視angular.element1
該方法的**簡化如下:
function publishexternalapi(angular) );
//定義angular.module方法
angularmodule = setupmoduleloader(window);
//嘗試獲取nglocal模組,如果沒有,則需要註冊乙個
try catch (e)
//註冊ng模組,也就是angularjs的核心模組
angularmodule('ng', ['nglocale'], ['$provide',
function ngmodule($provide)
]);}
主要功能為:
function
angularinit
(element, bootstrap) ;
foreach(ngattrprefixes, function
(prefix)
});foreach(ngattrprefixes, function
(prefix)
});}
}
需要說明的是,angularjs支援的屬性字首有多種,包括ng-、data-ng-、ng:和x-ng-,具體請看ngattrprefixes變數。
應用的啟動方式主要包括自動啟動和手動啟動。
自動啟動
ng-controller="ctrl">
div>
div>
var mymodule = angular.module('mymodule', );
mymodule.controller('ctrl', ['$scope', function
($scope) ]);
script>
手動啟動
ng-controller="ctrl">
div>
div>
var mymodule = angular.module('mymodule', );
mymodule.controller('ctrl', ['$scope', function
($scope) ]);
angular.element(document).ready(function
() );
script>
引用jquery的前提下,和$用法基本相同:angular.element(『#id』).hide(),不引入jquery,則功能較弱angular.element(document).find(『xx』).hide() ↩ linux啟動流程 (1)
啟動流程一覽 1.載入bios的硬體資訊與進行自我測試,並依據設定取得第乙個可啟動的裝置 2.讀取並執行第乙個啟動裝置內mbr的boot loader 也就是grub,spfdisk等程式 3.依據boot loader的設定載入kernel,kernel會開始檢測硬體與載入驅動程式 4.在硬體驅動...
AngularJS執行流程詳解
大家應該都知道,當瀏覽器載入乙個html頁面時,它會將hmtl頁面先解析成dom樹,然後逐個載入dom樹中的每乙個元素節點。我們可以把angularjs當做乙個類似jquery的js庫,我們通過 compile服務通過遍歷dom樹的方式查詢有宣告指令的dom元素。當碰到帶有乙個或多個指令的dom元素...
Angularjs啟動過程
步驟一 有兩個property,其它都是function 一共有5個方法 annotate 分析函式簽名 不要new的原因 步驟二if window.angular.bootstrap angular的三種啟動方式步驟三嘗試繫結jquery,如果發現匯入了jquery 則使用匯入的jquery,否則...