這篇文章主要介紹了關於AngularJS 文件閱讀的指令scope,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
scope
指令,是AngularJS
最常用的功能,讓我們很容易在前台實作程式碼重複使用。而指令最精髓的地方,就在於指令內外域scope
的互動方式。
本文屬於一篇對文件的翻譯加上一些自己對此的理解,因水平有限,可能某些地方翻譯的不通順,或者翻譯的錯了,歡迎大家批評指正。本文對scope
的用法以及描述均翻譯自AngularJS
英文文檔,文檔地址:AngularJS 官方文檔
scope
屬性的值可以是false
,可以是true
,也可以是物件。
false
false
:這是指令scope
的預設屬性,不會為指令建立一個scope
,這個指令會使用他的父scope
。
true
true
:為指令建立一個從父scope
原型繼承的子scope
。
物件
{key: value}
:為指令建立一個新的隔離scope
,隔離scope
和通常的scope
的差別在於:隔離scope
不從父scope
做原型繼承。
不會從父scope
做原型繼承,這對於建立可重複使用的元件非常有用,可重複使用元件不應該從父scope
讀取或修改屬性。
注意:一個有隔離scope
但是沒有template
或templateUrl
的指令不會將隔離scope
應用到它的子元素。 這是在文件上寫的,目前還沒有理解到究竟是什麼意思。
也可能是我翻譯的不對,以下是原文:
Note that an isolate scope directive without a template or templateUrl will not apply the isolate scope to its children elements.
隔離物件定義了源自於指令元素的屬性的本機scope
屬性集合。
scope綁定
以下幾種綁定都是可以加參數的。
範例:
scope: { name: '=nameAttr' }
綁定的就是:<test name-attr="'hello'"></test>
。
scope: { name: '=' }
綁定的就是:<test name="'hello'"></test>
。
字串綁定
@
/@attr
:綁定本地scope
的屬性到DOM
屬性的值,這個結果總是一個字串,因為DOM
屬性就是字串。隨著DOM
屬性值的改變,指令scope
上的屬性也會改變,因為這個屬性是在它的父scope
上讀取的。
雙向綁定
=
/=attr
:本地scope
的屬性和傳遞到屬性上的表達式建立雙向綁定,該表達式是在父scope
的範圍內計算的。如果綁定的表達式不是可賦值的,或者它不是可選的但是指令中沒有傳,$compile:noassign
異常就會被拋出,因為它無法和父scope
同步。
預設地,$watch
方法通常用來監聽改變,並且根據物件的位址來進行相等判斷。然而,如果一個物件位址或陣列位址被傳遞到綁定的表達式中,比較的方法就是透過判斷值是否相等。也可以使用=*
/=*attr
和$watchCollection
來進行淺監聽。
這段話還不是很理解,在StackOverflow
找到了一個可靠的回答,但還不是很明白。 AngularJS =* 問題
單向綁定
/<code><attr>:在本地<code>scope
和傳遞到DOM
屬性上的表達式之間建立單向綁定,所有在DOM
屬性上表達式的改變會反映在scope
的屬性上,但是scope
屬性上的改變不會反映在DOM
屬性的表達式上。
但是這有兩個警告:
1.單向綁定不是將父scope
的值拷貝到隔離scope
上,而是簡單的設定相同的值。如果你傳的是一個對象,那在隔離scope
上對該對象的改變會反映到父scope
上,因為兩者引用同一個對象。
2.單向綁定監視的是父值位址的改變。這表示父值上的$watch
僅僅在引用的位址發生變更時才會生效。大多數情況下,這是不需要關心的。但是必須要知道如果你單向綁定了一個對象,然後會改變隔離scope
上的對象,如果改變了父scope
上的該對象的一個屬性,這個改變是不會傳遞到隔離scope
上的,因為這個物件的位址沒有改變,除非你賦值一個新的物件。
如果不打算將隔離scope
的改變傳播會父節點,單向綁定是很有用的。
绑定方法
&
/&attr
:在父scope
提供一个可执行的表达式,就是传一个方法。
设置可选
所有的绑定(@, =, )都能通过在表达式上添加<code>?
设置为可选的,这个标志必须在绑定模式之后,属性名称之前。
可选和不可选的区别在于:
绑定是可选的,这个属性不会被定义。
绑定不是可选的,这个属性被定义了。
以下是AngularJS
文档中对可选指令的示例代码。
app.directive('testDir', function() { return { scope: { notoptional: '=', optional: '=?', }, bindToController: true, controller: function() { this.$onInit = function() { console.log(this.hasOwnProperty('notoptional')); // true console.log(this.hasOwnProperty('optional')); // false } } }; });
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上是AngularJS 文檔閱讀的指令scope的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版