云自無心水自閑

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


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

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

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

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

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

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


          主站蜘蛛池模板: 交城县| 靖州| 鄄城县| 博客| 蕲春县| 孙吴县| 盐池县| 吉首市| 奈曼旗| 句容市| 松滋市| 达拉特旗| 商丘市| 轮台县| 高密市| 凌海市| 河南省| 东阳市| 青阳县| 扬州市| 三门县| 梅州市| 咸丰县| 栾川县| 武强县| 通化市| 铜山县| 西城区| 清水河县| 阿尔山市| 安顺市| 新干县| 辽宁省| 伊春市| 新龙县| 衡水市| 安泽县| 石棉县| 武乡县| 丰城市| 贵州省|