簡體   English   中英

AngularJS中的$ scope vs var

[英]$scope vs var in AngularJS

我一直在使用var和$ scope.varname,兩者都可以在AngularJS中正常工作。 我想知道兩者在功能上是否存在差異,哪種最佳實踐在哪一個?

是! $scope變量綁定到視圖,其中var不是,並且是聲明它的函數的本地變量!

var x = 3;
$scope.y = 3;

{{x}} - undefined
{{y}} - 3

1 - $ scope,是控制器和視圖/模型之間的粘合劑 ,當你為控制器的$ scope定義變量/函數時,你的整個視圖,這個控制器控制它! ,可以看到變量/功能。 純變量只適用於該控制器,甚至不是該控制器的視圖!

2-已經定義到$ scope的每個東西都可以從控制器外部進行復制,貫穿指令服務你的html視圖 ......,而純變量則不是;

@tymeJV和其他人已經描述了使用var$scope的技術含義。 我認為下一個合乎邏輯的問題答案是: 我什么時候使用?

TL; DR - 如果你不在視圖中使用變量(例如{{myVar}} ),請使用var

原因有兩個:

  1. 封裝 - 隱藏視圖不需要的狀態。 這將防止對變量進行意外修改。

  2. 性能 (防止額外的摘要周期) - Angular對變量執行“臟狀態”檢查。 修改視圖中未使用的變量可能會不必要地導致額外的摘要周期。 在具有幾個ng-repeat和一堆手表的應用程序中,這會產生巨大的影響。

簡單地說 - 您在$ scope上定義的所有變量,例如在您的控制器中,都可以在您的html標記中找到。 如果您需要在js函數內部使用變量,可以使用var聲明它,它們只在本地可用。 與功能相同。

$ scope綁定到視圖的值,var是應用程序的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM