我一直在使用var和$ scope.varname,两者都可以在AngularJS中正常工作。我想知道两者在功能上是否存在差异,以及最佳做法是使用哪一种?
答案 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
。
原因有两个:
封装 - 隐藏视图不需要的状态。这样可以防止对变量进行意外修改。
效果(防止额外的摘要周期) - 角度执行"脏状态"检查变量。修改视图中未使用的变量可能会不必要地导致额外的摘要周期。在具有几个ng-repeat
和一堆手表的应用程序中,这会产生巨大的影响。
答案 3 :(得分:2)
简单地说 - 您在$ scope上定义的所有变量,例如在您的控制器中,可在您的html标记中使用。如果您需要在js函数内部使用变量,可以使用var声明它,它们只在本地可用。与功能相同。
答案 4 :(得分:0)
$ scope绑定到视图的值,var是应用程序的局部变量。