当$ scope死亡时,angular 1 $ scope和Controller as?

时间:2016-12-26 10:38:48

标签: angularjs

由于存在"控制器为",因为角度为1.2,它不存在? 2013年底发布?为什么人们,书籍,博客和教程编写了具有$ scope的代码,仍然在2015,2014?

我见过在2015年和2016年使用角度1.1或角度1.2编程风格的人有1年或2年的经验,他们在角度1.5时丢失了,例如没有使用组件。

乔布斯要求角度只是要求角度程序员' ,他们知道人们以不同的方式使用每一个角度存在很大的差异,例如使用$ scope,或只是指令而不是组件,或者他们不使用ES2015与babel?

我从来没有理解过。真的美元范围何时死亡? 如果这个问题不适用于stackoverflow,我可以发布它吗?

1 个答案:

答案 0 :(得分:2)

范围尚未死亡,可能永远不会死亡。通常认为controllerAs功能来替换scope,但事实并非如此。实际上,controllerAs会弃用scope的viewmodel职责,在此之前,每个模板的所有viewmodel成员都在组件范围内声明,现在它已在组件的类this上声明,最后,它成为范围的成员,在内部将一个范围成员中的viewmodel的所有功能隔离开来。

使用controllerAs来处理您的viewmodel是一种非常好的做法,但您仍然需要scope来执行scope事情。例如,发出和监听事件,处理消化周期等。因此,controllerAs将视图模型与真正的scope职责分开。因此,范围从未真正消失,只是通过优化功能改变了如何使用它。

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