2016-12-26 82 views
4

既然存在“控制器为”,它是不存在的,因为角1.2? 2013年底发布?为什么人们,书籍,博客和教程已经用$ scope编写代码,仍然在2015,2014年?

我见过的人,在2015年和2016年采用了棱角分明1.1或1.2角的编程风格1或2年的工作经验,他们与角1.5丢失,例如不使用的部件。

乔布斯使用$范围要求的角度自讨苦吃'角程序员,他们知道有使用不同方式的每一个角度很大的差异的人,通过实例,或者只是指令,而不是组件,或者他们不使用ES2015与巴贝尔?

我一点都不明白。 $范围真的死了? 如果这个问题不是为了stackoverflow,我可以发布它?

回答

2

范围不是死了,而且很可能永远不会这么做。通常认为controllerAs功能取代了scope,但它没有。其实,controllerAs来贬低的scope,在视图模型的责任之前,所有每个模板的视图模型的成员被宣布组件范围时,现在它宣布对组件的this类,并在年底,它成为范畴成员在内部单个作用域成员中隔离viewmodel的所有功能。

使用controllerAs来处理你的viewmodel是一个非常好的做法,但是,你仍然需要scope来做,比如说,scope的东西。例如,发出并听取事件,处理消化周期等。因此,controllerAs将与真正的scope职责分开。所以,范围从来没有真的死过,只是改变了如何使用它一点优化的功能。

不管怎么说,这并不意味着使用旧的范围的方式是不好的或使用的控制器,而不是零件,它们。高度推荐采用这种做法,在大型项目中,它比小型项目更有意义。此外,旧的项目使用旧angularjs内置功能,因此,像整个项目移动到新的方式controllerAscomponents的突然变化是不是便宜容易的事,特别是具有大型项目。

+1

通过一点工作,您可以完全消除使用$ scope抛弃代码的需要。看看:http://www.technofattie.com/2014/03/21/five-guidelines-for-avoiding-scope-soup-in-angular.html,所以我认为一些项目可以写出没有范围 – stackdave

+1

@stackdave如果你有机会从头开始编写项目,你可以考虑使用John Papahttps提出的风格指南://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md –