搜尋

首頁  >  問答  >  主體

angular.js - 在使用Angular開發中如何將資料注入$rootScope

另外,是否有類似main.js的那種js,裡面可以去定義全域變數。例如var http = "www.xxxx.com/",可以使得其他的Ctrl.js,都可以呼叫。

PHP中文网PHP中文网2744 天前609

全部回覆(5)我來回復

  • 高洛峰

    高洛峰2017-05-15 16:55:43

    思路不對,angular中不需要定义全局变量。你的数据应该通过service, factory, provider來提供。
    而這些東西是可以依賴注入的,所以壓根不需要全域變數

    回覆
    0
  • PHPz

    PHPz2017-05-15 16:55:43

    $rootScope是個對象,可以$rootScope.xxx='';的形式去綁定全域的變數

    回覆
    0
  • 某草草

    某草草2017-05-15 16:55:43

    @leftstick 說的對,AngularJS使用依賴注入的風格來架構整個應用的框架,最好不要聲明全域變量,而是把它做成Service。這樣你能避免不少問題:

    1. 命名衝突。在javascript中命名衝突不會給任何warning,如果你的專案不大出現機率較小,但非常難以調試。
    2. 初始化順序。如果你在ACtrl中定义了一个全局变量window.a,比如你想在BCtrl中使用它,那么你需要保证ACtrlBCtrl之前得到執行,這往往是不好實現,甚至是邏輯混亂的。

    在Angular中,最合理的辦法就是把a做成一个aService,注入到ACtrlBCtrl之中。

    如何定義一個service,以及Module、Service、Factory、Provider之間的關係可以參考這篇部落格:

    http://harttle.github.io/2015/06/07/angular-module.html

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-15 16:55:43

    雷雷

    回覆
    0
  • 怪我咯

    怪我咯2017-05-15 16:55:43

    現在angularjs2 都出來了

    回覆
    0
  • 取消回覆