AngularJS中的$ scope vs var

时间:2014-06-18 14:15:29

标签: angularjs variables

我一直在使用var和$ scope.varname,两者都可以在AngularJS中正常工作。我想知道两者在功能上是否存在差异,以及最佳做法是使用哪一种?

5 个答案:

答案 0 :(得分:62)

是的! $scope个变量绑定到var不存在的视图,并且是声明它的函数的本地变量!

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

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

答案 1 :(得分:7)

1 - $ scope,是你的控制器和你的视图/模型之间的粘合,当你定义一个变量/函数到控制器的$ scope,你的整个视图,这个控制器控制它! ,可以看到变量/功能。纯变量只适用于该控制器,甚至不是该控制器的视图!

2-已定义到$ scope的所有内容都可以从控制器外部进行操作,遍及指令服务您的html查看 ...,而纯变量是NOT;

答案 2 :(得分:7)

@tymeJV和其他人已经描述了使用var$scope的技术含义。我认为下一个合乎逻辑的问题答案是:我什么时候使用?

TL; DR - 如果您未在视图中使用变量(例如{{myVar}}),请使用var

原因有两个:

  1. 封装 - 隐藏视图不需要的状态。这样可以防止对变量进行意外修改。

  2. 效果(防止额外的摘要周期) - 角度执行"脏状态"检查变量。修改视图中未使用的变量可能会不必要地导致额外的摘要周期。在具有几个ng-repeat和一堆手表的应用程序中,这会产生巨大的影响。

答案 3 :(得分:2)

简单地说 - 您在$ scope上定义的所有变量,例如在您的控制器中,可在您的html标记中使用。如果您需要在js函数内部使用变量,可以使用var声明它,它们只在本地可用。与功能相同。

答案 4 :(得分:0)

$ scope绑定到视图的值,var是应用程序的局部变量。