這篇文章主要介紹了關於angularjs的資料綁定,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
angularjs 的資料綁定
在angularjs1.X 中存在了三種資料綁定的方式,用於資料的同步、展示。在angularjs 1.3
之前,angularjs
只存在兩種方式: two-way-binding
和one-way-bindng
, 而後則引入了稱為one-time-binding
的綁定機制。
目前angularjs
中存在以下三種資料綁定方式:
two-way-binding
-
one-way-binding
one-time-binding
two-way-binding
# #angularjs
中的Two-way-binding
的作用是將Model
和
關聯起來,任何一邊的資料變更都會更新另一側的數據。 常見場景是頁面中的輸入區域。雙向綁定可以很容易的將輸入控制項的值關聯到
資料模型
。 <pre class="brush:php;toolbar:false"><input></pre>
透過
- 我們可以很容易的將輸入框(
- view
)的值和
name ( - ) 關聯起來。在雙向資料流的作用下,無論是我們修改輸入框的值或修改
name
在不同生命週期中,有不同的邏輯處理。,另外一側都會及時更新到新資料。
ng-model
是
angularjs內建的一個指令用來實現雙向綁定。
ng-model -
#ng-modelcompilation phase:
指令和 - 指令會合併處理給
input
標籤註冊 keydown -
則註冊一個##interpolation
$watch - 用來訂閱
change
事件(angularjs Event)。
Runtime Phase
#使用者輸入觸發
keydown-
input
事件,呼叫指令捕捉
keydown $apply - 來要求更新動作。
#進入angularjs
更新值到
Model $digest - 上下文
- 表達式偵測到
Model
發生了 change
- Model
- 事件(DOM Event);
,請求更新
DOM。 angularjs
託管結束,退出託管,交還控制權到 JavaScript 執行上下文。 最後瀏覽器重新渲染文字。
不同於
Two-way-binding的雙向流動,
one-way- binding 的資料流向是單向,即只會從
model 流向
view
view 流向
model 。因此,
one-way-binding
- 在
angularjs
中, one-way-binding - ng-bind
和
two-way-binding{{expression} }
。<pre class="brush:php;toolbar:false"><span> </span> <span>{{name}}</span></pre>
對於one-way-binding
來說,內部機制和 有部分相同的機制。 - compilation phase:
-
用來訂閱#interpolation
註冊一個
$watch change - 事件(angularjs Event)。
runtime phase:
#angularjs - 進入
$digest
。
-
expression
的 $watch
- 則有兩種語法:
,要求更新
DOM。 angularjs
託管結束,退出託管,交還控制權到 JavaScript 執行上下文。
最後瀏覽器重新渲染文字。
<span>{{::name}}</span>
对于上面的代码,假设 name
从 undefined
-> angularjs
-> angular
,最终渲染的结果是 angularjs
,而不是 angular
。 这就是 one-time-binding
的特殊之处,当 name
从 undefined
变化为 angularjs
之后,被认定为 name
的状态已经是 stable
,因此将取消 $watch
, 即不再监听数据变化。
那么,假设 name
从 ''
-> angularjs
-> angular
, 则渲染结果是 ''
,即空字符串(第一次的值)。因为 one-time-binding
在计算 stable
时候使用的 严格相等,即 newVal === undefined
, 如果是,则继续保留 $watch
等待下一次的比较;否则,状态变更为 stable
,取消 $watch
, 数据转化为最终态。
结束
在我看来,angularjs
核心在于 angularjs context
和 $digest
。
angularjs context
保证 angularjs
可以捕获到各种事件,用户输入、鼠标事件、键盘事件、甚至 $settimeout
和 $http
等异步行为的状态流转。
而 $digest
则保证 angularjs
可以确认是否要更新数据。
文中难免存在一些错误,欢迎大家斧正。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
addEventListener中的EventListener的接口对象
以上是angularjs的資料綁定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。