Angularjs 角度1$范围和控制器组件,当$范围失效时?

Angularjs 角度1$范围和控制器组件,当$范围失效时?,angularjs,Angularjs,因为当存在“控制器as”时,它从角度1.2开始就不存在了?2013年底发布?为什么人们、书籍、博客和教程仍然在20152014中使用$scope编写代码 我见过有1到2年使用angular 1.1或angular 1.2编程风格经验的人,他们在2015年和2016年都没有使用angular 1.5,例如不使用组件 乔布斯要求angular只是要求“angular programmer”,他们知道有很大的不同,人们以不同的方式使用每个angular,例如使用$scope,或者只是指令而不是组件,或

因为当存在“控制器as”时,它从角度1.2开始就不存在了?2013年底发布?为什么人们、书籍、博客和教程仍然在20152014中使用$scope编写代码

我见过有1到2年使用angular 1.1或angular 1.2编程风格经验的人,他们在2015年和2016年都没有使用angular 1.5,例如不使用组件

乔布斯要求angular只是要求“angular programmer”,他们知道有很大的不同,人们以不同的方式使用每个angular,例如使用$scope,或者只是指令而不是组件,或者他们不使用ES2015和babel

我一直不明白。真的是什么时候死的?
如果这个问题不是针对stackoverflow的,我可以在哪里发布它?

Scope还没有死,可能永远也不会死。人们普遍认为,
controllerAs
功能取代了
scope
,但事实并非如此。实际上,
controllerAs
开始反对
scope
的viewmodel职责,在此之前,每个模板的所有viewmodel成员都是在组件作用域上声明的,现在它是在组件的类
this
上声明的,最后,它成为范围的一个成员,在内部将viewmodel的所有功能隔离在单个范围成员中

使用
controllerAs
处理viewmodel是一个很好的实践,但是,您仍然需要
scope
来做,比如说
scope
事情。例如,发出和侦听事件、处理消化循环等。因此,
controllerAs
将viewmodel与real
scope
职责分开。所以,scope从未真正消亡过,只是通过一个优化的特性稍微改变了它的使用方式


无论如何,这并不意味着使用旧的作用域方式是不好的,也不意味着使用控制器而不是组件。高度推荐采用这种做法,在大型项目中,它比在小型项目中更有意义。另外,旧项目是使用旧的angularjs功能构建的,因此,像将整个项目移动到新的方式作为
controllerAs
组件
这样的突然变化并不是一件容易做到的事情,特别是在大型项目上。

只需做一点点工作,您就可以完全消除将代码浪费在$scope上的需要。看看:,所以我认为有些项目可以不用scope@stackdave如果你有机会从头开始写这个项目,你可以考虑使用John P提出的风格指南。apahttps://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md