国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入理解Angularjs 臟值檢測

2024-05-06 15:28:47
字體:
來源:轉載
供稿:網友

構建自己的AngularJS,第一部分:Scope和Digest

Angular是一個成熟和強大的JavaScript框架。它也是一個比較龐大的框架,在熟練掌握之前,需要領會它提出的很多新概念。很多Web開發人員涌向Angular,有不少人面臨同樣的障礙。Digest到底是怎么做的?定義一個指令(directive)有哪些不同的方法?Service和provider有什么區別?

Angular的文檔挺不錯的,第三方的資源也越來越豐富,想要學習一門新的技術,沒什么方法比把它拆開研究其運作機制更好。

在這個系列的文章中,我將從無到有構建AngularJS的一個實現。隨著逐步深入的講解,讀者將能對Angular的運作機制有一個深入的認識。

在第一部分中,讀者將看到Angular的作用域是如何運作的,還有比如$eval, $digest, $apply這些東西怎么實現。Angular的臟檢查邏輯看上去有些不可思議,但你將看到實際并非如此。

基礎知識

在Github上,可以看到這個項目的全部源碼。相比只復制一份下來,我更建議讀者從無到有構建自己的實現,從不同角度探索代碼的每個步驟。在本文中,我嵌入了JSBin的一些代碼,可以直接在文章中進行一些互動。(譯者注:因為我在github上翻譯,沒法集成JSBin了,只能給鏈接……)

我們將使用Lo-Dash庫來處理一些在數組和對象上的底層操作。Angular自身并未使用Lo-Dash,但是從我們的目的看,要盡量無視這些不太相關的比較底層的事情。當讀者在代碼中看到下劃線(_)的時候,那就是在調用Lo-Dash的功能。

我們還將使用console.assert函數做一些特別的測試。這個函數應該適用于所有現代JavaScript環境。

下面是使用Lo-Dash和assert函數的示例:

http://jsbin.com/UGOVUk/4/embed?js,console

Scope對象

Angular的Scope對象是POJO(簡單的JavaScript對象),在它們上面,可以像對其他對象一樣添加屬性。Scope對象是用構造函數創建的,我們來寫個最簡單的版本:

function Scope() {}

現在我們就可以使用new操作符來創建一個Scope對象了。我們也可以在它上面附加一些屬性:

var aScope = new Scope();aScope.firstName = 'Jane';aScope.lastName = 'Smith';

這些屬性沒什么特別的。不需要調用特別的設置器(setter),賦值的時候也沒什么限制。相反,在兩個特別的函數:$watch和$digest之中發生了一些奇妙的事情。

監控對象屬性:$watch和$digest

$watch和$digest是相輔相成的。兩者一起,構成了Angular作用域的核心:數據變化的響應。

使用$watch,可以在Scope上添加一個監聽器。當Scope上發生變更時,監聽器會收到提示。給$watch指定如下兩個函數,就可以創建一個監聽器:

一個監控函數,用于指定所關注的那部分數據。 一個監聽函數,用于在數據變更的時候接受提示。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 改则县| 西丰县| 交城县| 绥阳县| 开远市| 灯塔市| 兴海县| 若尔盖县| 双流县| 修水县| 盐亭县| 山东| 巩留县| 读书| 科技| 长葛市| 泾川县| 漾濞| 英德市| 平山县| 垦利县| 略阳县| 周至县| 泾源县| 彝良县| 延川县| 大连市| 迁西县| 纳雍县| 海丰县| 叙永县| 泽州县| 麻江县| 邳州市| 淮滨县| 木里| 正安县| 建德市| 连州市| 青田县| 当涂县|