![](/img/trans.png)
[英]How to Pass $rootScope variable from Controller to Service in Angular JS
[英]$rootScope vs. service - Angular JS
實現$ rootScope函數和服務有什么區別? 安全明智或表現明智。
我讀過這個 ,所以我很想知道。
我一直試圖弄清楚我的應用程序的某個全局函數是否最好在服務或$ rootScope本身中實現。 為了讓你們知道我在做什么,我正在開發一個臟表格功能,在這個功能中,如果他/她離開某個表格,它會提示用戶。 在這種情況下,我決定最好將它作為一個全局函數實現,所以任何提示?
謝謝你的回復,
一月
在這種情況下,我會去尋求服務以避免出現全局狀態。 所有新范圍都是從$ rootScope創建的。 新控制器或使用示波器的人將具有$rootscope
值。 例如,如果您定義$rootScope.validate()
並在控制器中定義函數$scope.validate()
因為您忘記了第一個定義,肯定會出錯。
Misko H.有一篇關於這篇http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/的文章
服務是按需實例化的,而$ rootScope是在bootstrap期間創建的,可以在任何需要的地方注入。 這對可測試性有好處。
Angular不會實例化服務,除非應用程序直接或間接請求它們。
( http://docs.angularjs.org/guide/dev_guide.services.creating_services )
正如@egamonal所提到的,服務是更強大的共享功能的方式。 不僅服務按需實例化,它們本質上是單例的,因此一旦創建了服務,AngularJS會在需要時傳遞相同的實例。 因此,如果某些內容可以在根范圍內進行,則也可以使用服務來實現。
人們認為使用這種全局方法時要記住內存泄漏的可能性。 JS類或DOM元素的實例保留在內存中,因為您已從全局函數($ rootscope或service)中引用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.