我们什么时候使用$ scope,我们什么时候在AngularJS中使用var?

时间:2013-12-25 16:47:10

标签: javascript angularjs angularjs-scope

使用var比使用$ scope更好吗?在AngularJS变量里面的函数?

我问这个的原因并不像看起来那么简单。我最近阅读了关于$ watch,$ digest,$ apply的信息。虽然我完全不理解它,但我知道$ digest在循环中工作。 这篇文章很好地解释了它。

How do I use $scope.$watch and $scope.$apply in AngularJS?

因此,如果您在控制器中定义了$ scope.myVar,则明确告诉Angular监视myVar上的更改。这项活动不会减慢整个系统的速度吗?

1 个答案:

答案 0 :(得分:3)

简短回答:是的,最好将任何纯粹作为javascript变量(“var”)内部的变量声明为javascript变量(“var”),而不是将其添加到Angular范围。

Angular范围对象提供了许多很好的功能,允许它们在模型视图 - *(MV *)体系结构(例如data binding)中充当模型。或者换句话说,Angular guide to scopes说“Scope是应用程序控制器和视图之间的粘合剂”。

最好只将你需要的对象放在你的模型中,你需要将它们绑定到DOM和你的控制器/服务/ ......,因为这些功能确实会产生性能成本出。如果您的示波器与实际上不属于您模型的变量“混乱”,那么读取您的代码的其他人也会感到困惑。

以下是Angular scope docs范围内的具体功能:

  

范围提供API($ watch)来观察模型突变。

     

Scopes提供API($ apply)来传播任何模型更改   系统从“Angular realm”的外部进入视图   (控制器,服务,角度事件处理程序)。

     

可以嵌套范围以限制对应用程序属性的访问   组件,同时提供对共享模型属性的访问。嵌套   范围是“子范围”或“隔离范围”。一个“儿童范围”   (原型)从其父作用域继承属性。一个   “隔离范围”没有。有关详细信息,请参阅隔离范围。

     

范围提供了评估表达式的上下文。对于   示例{{username}}表达式没有意义,除非它被评估   针对定义用户名属性的特定范围。