首頁  >  問答  >  主體

angular.js - Angular的controller和service、factory的問題

如果我多個controller共享一份數據,是在某個比較上層的控制器上保存數據,還是用factory保存這個需要共享的數據,如果用service會怎麼樣。

怪我咯怪我咯2688 天前518

全部回覆(3)我來回復

  • 为情所困

    为情所困2017-05-15 16:55:11

    這個問題取決於你用資料的時候,這個資料的商業關聯性在你的 scope 層級到底有多強。

    強,就是說你非常確定在某個 scope 用到它的時候,向上找一定可以找到某個父級 scope,那就可以利用 scope 的繼承性來共享。不過建議要用 controller as 的语法给每一个 controller 唯一的命名空间以避免对象重名。实际上你甚至可以把这个数据保存在 $rootScope 来全局共享(但是不推荐,因为 $rootScope 越輕越好),或是有一個最頂層的全域 controller 來保存也可以。

    不強,就是說你無法確定何時何處會用到這個數據,那就用依賴注入咯。純資料的話,建議用 module.value (可变数据)或 module.constant(不可变数据),当然也可以用 module.factory 返回一个对象(这就和 module.value 一样一样的)。module.service 常用於傳回一個建構器,你可以利用它產生不同的物件實例(區別於其他的單例 service)。

    其實 module.value/constant/factory/service 全都是 module.provider 的變種(文法糖),好好把官方文件裡關於依賴注入和服務那一章看一遍你就全明白了。

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:55:11

    用service咯,service一般用來存數據,factory一般是用來調用多個service~或者返回方法,當然功能都是可以互用的,其實感覺是差不多的,至於他們的區別你可以去看這個或這個

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:55:11

    其實我對factory和service的差別沒發現有什麼不同,如果你喜歡js的object,那就前者,如果喜歡js的oop,那就service。 。 。有篇譯文是這樣解釋的。

    回覆
    0
  • 取消回覆