成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

AngularJS 的依賴注入

mindwind / 2179人閱讀

摘要:代碼代碼需要注意的地方這個(gè)方法只適合未經(jīng)過(guò)壓縮和混淆的代碼因?yàn)樾枰嘉唇?jīng)壓縮的參數(shù)列表來(lái)進(jìn)行解析。代碼代碼注意的地方行內(nèi)聲明的方式允許我們直接傳入一個(gè)參數(shù)數(shù)組而不是一個(gè)函數(shù)。

AngularJS 依賴注入的方法 1. 通過(guò)函數(shù)的參數(shù)進(jìn)行推斷式注入聲明

如果沒(méi)有明確的什么, AngularJS 會(huì)假定參數(shù)名稱就是依賴的名稱。因此, 它會(huì)在內(nèi)部調(diào)用函數(shù)對(duì)象的 toString() 方法, 分析并提取出函數(shù)的參數(shù)列表, 然后通過(guò) $injector 將這些參數(shù)注入進(jìn)對(duì)象實(shí)例。

HTML代碼:





    demo
    
    



    

{{clock.time | date: "yyyy-MM-dd hh:mm:ss"}}

JS 代碼:

angular.module("myApp", [])
    .controller("myController", myController)

function myController($scope, $timeout) {
    var updateTime = function() {
        $scope.clock = {
            time: new Date()
        }

        $timeout(function() {
            $scope.clock.time = new Date()
            updateTime()
        }, 1000)
    }
    updateTime()
}

需要注意的地方:

這個(gè)方法只適合未經(jīng)過(guò)壓縮和混淆的代碼, 因?yàn)?AngularJS 需要原始未經(jīng)壓縮的參數(shù)列表來(lái)進(jìn)行解析。

2. 顯式的注入聲明

AngularJS 提供了顯式的方法來(lái)明確定義一個(gè)函數(shù)在被調(diào)用時(shí)需要用到的依賴關(guān)系。通過(guò)這種方法聲明依賴, 即使在源代碼被壓縮, 參數(shù)名稱發(fā)生改變的情況下依然可以正常工作。

HTML 代碼:





    demo
    
    



    

{{clock.time | date: "yyyy-MM-dd hh:mm:ss"}}

JS 代碼:

angular.module("myApp", [])
    .controller("myController", myController)

function myController(s, t) {
    var updateTime = function() {
        s.clock = {
            time: new Date()
        }
        t(function() {
            s.clock.time = new Date()
            updateTime()
        }, 1000)
    }
    updateTime()
}

myController["$inject"] = ["$scope", "$timeout"]
3. 行內(nèi)注入聲明

AngularJS 提供的行內(nèi)注入方法實(shí)際上是一種語(yǔ)法糖, 它與前面提到的通過(guò) $inject 屬性進(jìn)行聲明的原理是一樣的, 但是允許我們?cè)诤瘮?shù)定義的時(shí)候從行內(nèi)將參數(shù)傳入, 這種方法方便,簡(jiǎn)單,而且避免了在定義的過(guò)程中使用臨時(shí)變量。

HTML 代碼:





    demo
    
    



    

{{clock.time | date: "yyyy-MM-dd hh:mm:ss"}}

JS 代碼:

angular.module("myApp", [])
    .controller("myController", ["$scope", "$timeout", function(s, t) {
        var updateTime = function() {
            s.clock = {
                time: new Date()
            }
            t(function() {
                s.clock.time = new Date()
                updateTime()
            }, 1000)
        }
        updateTime()
    }])

注意的地方:

行內(nèi)聲明的方式允許我們直接傳入一個(gè)參數(shù)數(shù)組, 而不是一個(gè)函數(shù)。數(shù)組的元素是字符串, 它們代表的是可以被注入到對(duì)象中的依賴名字, 最后一個(gè)參數(shù)就是依賴注入的目標(biāo)函數(shù)對(duì)象本身。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86857.html

相關(guān)文章

  • [ AngularJS ] 自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單依賴注入

    摘要:我們開始使用的時(shí)候,它的雙向數(shù)據(jù)綁定是最讓我們印象深刻的,那第二個(gè)就應(yīng)該算是它的那神奇的依賴注入的功能了。來(lái)實(shí)現(xiàn)依賴注入現(xiàn)在大部分的框架都提供依賴注入機(jī)制的模塊,可能會(huì)叫做。 我們開始使用AngularJS的時(shí)候,它的雙向數(shù)據(jù)綁定是最讓我們印象深刻的,那第二個(gè)就應(yīng)該算是它的那神奇的依賴注入的功能了。 舉個(gè)栗子 function myController = ($scope,...

    seasonley 評(píng)論0 收藏0
  • 【譯】《精通使用AngularJS開發(fā)Web App》(五)

    摘要:上一篇譯精通使用開發(fā)四下一篇譯精通使用開發(fā)六書名合作對(duì)象正如所見,提供了一種將對(duì)象組織為模塊的方式。模塊不僅可以注冊(cè)可以直接被框架所調(diào)用的對(duì)象控制器,過(guò)濾器等,還可以使用任何應(yīng)用開發(fā)者所定義的對(duì)象。 上一篇:【譯】《精通使用AngularJS開發(fā)Web App》(四) 下一篇:【譯】《精通使用AngularJS開發(fā)Web App》(六) 書名:Mastering Web Applic...

    PiscesYE 評(píng)論0 收藏0
  • AngularJs 入門(一)--前言

    摘要:入門一前言目前來(lái)說(shuō)相對(duì)于現(xiàn)在流行的高版本以及來(lái)說(shuō)實(shí)屬是老套的前端框架了,當(dāng)然這都不重要,沒(méi)有完美的框架,只有不斷優(yōu)化的代碼。通過(guò)使用我們稱為指令的結(jié)構(gòu),讓瀏覽器能夠識(shí)別新的語(yǔ)法。使用作為輸入,而不是字符串,是區(qū)別于其它的框架的最大原因。 AngularJs 入門(一) 前言 AngularJs目前來(lái)說(shuō)相對(duì)于現(xiàn)在流行的高版本ng2、ng4,以及Vue2.0、React來(lái)說(shuō)實(shí)屬是老套的前...

    wenyiweb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<