搜尋
首頁web前端js教程AngularJS 文檔閱讀的指令scope

AngularJS 文檔閱讀的指令scope

Jul 09, 2018 pm 03:58 PM
angular.jsdirective

這篇文章主要介紹了關於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但是沒有templatetemplateUrl的指令不會將隔離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 表格导出添加额外信息

以上是AngularJS 文檔閱讀的指令scope的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

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

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

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

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

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

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

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

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

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

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

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

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

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

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版