使用var是否比使用$ scope更好?在AngularJS里面的函数变量?
我提出这个问题的原因并不像看起来那么简单。我最近读到有关$ watch,$ digest,$ apply的信息。尽管我不完全了解它,但我知道$ digest可以循环工作。这篇文章解释得很好。
如何在AngularJS中使用$ scope。$ watch和$ scope。$ apply?
因此,如果您在控制器中定义了$ scope.myVar,则明确告诉Angular监视myVar上的更改。这项活动不会减慢整个系统的速度吗?
简短的答案:是的,最好将控制器内部纯粹的任何变量声明为javascript变量(“ var”),而不是将其添加到Angular范围。
Angular作用域对象提供了许多不错的功能,使它们可以充当模型视图-*(MV *)体系结构中的模型(例如,数据绑定)。或者说另一种方式,如范围的Angular指南所说:“范围是应用程序控制器和视图之间的粘合剂”。
最好指出的是,最好只将模型中需要的对象,需要同时绑定到DOM和controller / services / ...的对象放在范围内,因为这些功能确实会降低性能。如果您的作用域“杂乱”了一些实际上不是模型的一部分的变量,那么这也会使其他阅读您代码的人感到困惑。
这是Angular范围文档中的范围的特定功能:
范围提供API($ watch)来观察模型突变。
范围提供API($ apply)以将所有模型更改通过系统从“ Angular域”(控制器,服务,Angular事件处理程序)的外部传播到视图中。
范围可以嵌套以限制对应用程序组件属性的访问,同时提供对共享模型属性的访问。嵌套范围是“子范围”或“隔离范围”。“子作用域”(典型地)从其父作用域继承属性。“隔离范围”则没有。有关更多信息,请参见隔离范围。
范围提供了针对表达式进行评估的上下文。例如,{{username}}表达式是没有意义的,除非根据定义了username属性的特定范围对其进行评估。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句