這篇文章介紹angularjs的資料綁定的介紹,裡面有很多與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
可以确认是否要更新数据。
本篇关于angularjs的文章到这也就结束了(想看更多就到PHP中文网angularjs参考手册中学习),有问题的可以在下方留言提问。
以上是關於angularjs的資料綁定的介紹,這裡有詳細的解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。