云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理


          在前文(http://www.aygfsteel.com/usherlight/archive/2015/02/01/422633.html)中我們曾經介紹過,定義controller時,需要2個參數,第一個參數是controller的名稱,第二個參數是一個數組,數組的最后一個元素將是controller的函數,前面的參數是controller的依賴項。我們現在就來仔細分析一下其中的具體過程。

          先給一個例子:
          angular. module('notesApp' , [])
           . controller('MainCtrl' , ['$log' , function($log) {
           var self = this;
           self. logStuff = function() {
           $log. log('The button was pressed' );
           };
           }])

          在這個例子中可以看到,我們在第一個參數中用字符串(服務名稱)添加了一個依賴項。當我們通過字符串聲明了這一個服務之后,我們就可以把它當作一個變量注入到函數中。AngularJS會自動查找字符串名稱對應的服務名,按照順序將其注入到函數中。
          myModule.controller("MainCtrl",  ["$log", "$window", function($l, $w) {}]);
          在這個例子中,$log, $windows是AngularJS自帶的兩個服務,在數組中通過名稱聲明后,會被注入到函數的兩個參數中。
          比較常用的AngularJS自帶的服務有:$window, $location, $http等

          從上面的例子中可以看出,AngularJS的設計思想就是不要在函數中自己去實例化或者通過其它途徑來獲取服務的實例,而是聲明需要的對象,由AngularJS來注入具體的實例。

          創建自己的服務
          什么時候應該創建服務,而不是controller呢?
          1。 需要重用的時候
          2。需要保留應用級的狀態。這是非常重要的一點,controller是會不斷地被創建和銷毀的,如果需要保存應用級的狀態,就需要使用service
          3。和頁面顯示無關
          4。需要和第三方服務整合
          5。緩存

          服務是會被延遲加載的,也就是說只有在第一次被引用的時候,才會被創建。
          服務將會被定義一次,也只會被實例化一次。


          主站蜘蛛池模板: 凌海市| 大城县| 双牌县| 大竹县| 宁海县| 江口县| 环江| 洪雅县| 荃湾区| 汝南县| 新津县| 河西区| 滨州市| 钟祥市| 凯里市| 道真| 嘉黎县| 类乌齐县| 罗城| 从江县| 罗江县| 龙川县| 和平县| 内江市| 柳河县| 娄烦县| 璧山县| 大石桥市| 忻州市| 泸水县| 霍林郭勒市| 本溪| 来凤县| 安国市| 黄平县| 馆陶县| 河南省| 南充市| 永昌县| 新昌县| 奉贤区|