簡體   English   中英

$ rootScope與服務 - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM