实现$rootScope功能和实现服务有什么区别?安全智慧或性能智慧。
我读过this,所以我想知道。
我一直在试图弄清楚,我的应用程序的某个全局功能是在服务中实现还是在$rootScope本身上实现最好。为了让你们知道我正在做什么,我目前正在开发一个脏表单函数,在这个函数中,如果用户离开某个表单,它会提示用户。在这种情况下,我决定最好将它实现为一个全局函数,那么有什么提示吗?
感谢你的回复,
1月
发布于 2013-05-02 15:34:45
在这种情况下,我会选择一个服务,以避免出现全局状态。所有新作用域都是从$rootScope创建的。新的控制器或任何使用作用域的人都将具有可用的$rootscope值。例如,如果您定义了$rootScope.validate(),并且在控制器中定义了一个函数$scope.validate(),因为您忘记了第一个定义,那么肯定会出问题。
Misko H.有一篇关于这个http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/的文章
服务是按需实例化的,而$rootScope是在引导过程中创建的,并且可以在需要的任何地方注入它们。这对可测试性有好处。
Angular不会实例化服务,除非应用程序直接或间接地请求它们。
(http://docs.angularjs.org/guide/dev_guide.services.creating_services)
发布于 2013-05-02 18:24:30
正如@egamonal提到的,服务是共享通用功能的更健壮的方式。不仅服务是按需实例化的,它们本质上是单例的,因此一旦创建了服务,无论何时请求,AngularJS都会传递相同的实例。因此,如果某些东西可以在根作用域上运行,那么它也可以使用服务来实现。
使用这种全局方法的一个想法是内存泄漏的可能性。JS类或DOM元素的实例保留在内存中,因为您已经从全局函数(在$rootscope或服务中)引用了它们。
https://stackoverflow.com/questions/16331102
复制相似问题