日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

AngularJS依赖注入

發布時間:2025/3/21 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AngularJS依赖注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文中內容基本上來自《AngularJS權威教程》

一個對象通常有三種方式可以獲得對其依賴的控制權:

  • 在內部創建依賴
  • 通過全局變量進行引用
  • 在需要的地方通過參數進行傳遞
  • 依賴注入是通過第三種方式實現的。依賴注入是一種設計模式,它可以去除對依賴關系的硬編碼,從而可以在運行時改變甚至移除依賴關系。

    在運行時修改依賴關系的能力對測試來講是非常理想的,因為它允許我們創建一個隔離的環境,從而在測試環境可以使用模擬的對象取代生產環境中的真實對象。從功能上來看,依賴注入會事先自動查找依賴關系,并將注入目標告知被依賴的資源,這樣就可以在目標需要時立即將資源注入進去。在編寫依賴于其它對象或庫的組件時,我們需要描述組件之間的依賴關系。在運行期,注入器會創建依賴的實例,并負責將它傳遞給依賴的消費者。

    基于以上原因,AngularJS使用$injector(注入器服務)來管理依賴關系的查詢和實例化。事實上,$injector負責實例化AngularJS中所有組件,包括應用的模塊、指令和控制器等。

    在運行時,任何模塊啟動時$injector都會負責實例化,并將其需要的所有依賴傳遞進去。

    下面是一個簡單的示例

    angular.module('myApp', [])

    .factory('greeter', function() {

    return {

    greet: function(msg) {alert(msg); }

    }

    })

    .controller('myController',function($scope, greeter) {

    $scope.sayHello = function() {

    greeter.greet("hello");

    };

    });

    當AngularJS實例化這個模塊時,會查找greeter并自然而然的把對它的引用傳遞進去。

    <div ng-app="myApp">

    <div ng-controller="myController">

    <button ng-click="sayHello()">Hello</button>

    </div>

    </div>

    推斷式注入聲明

    如果沒有明確聲明,AngularJS會假定參數名稱就是依賴的名稱。

    顯式注入聲明

    可以通過$inject屬性來實現顯式注入聲明的功能,函數對象的$inject屬性是一個數組,數組元素的類型是字符串,它們的值就是需要被注入的服務的名稱。這種聲明方式參數的順序非常重要。

    行內注入聲明

    AngularJS提供的注入聲明的最后一種方式,是可以隨時使用的行內注入聲明。這種方式其實是一個語法糖,它同前面提到的通過$inject屬性進行注入聲明的原理是一樣的,但允許我們在函數定義時從行內將參數傳入。此外它可以避免在定義過程中使用臨時變量。

    在定義一個AngularJS的對象時,行內聲明的方式允許我們直接傳入一個參數數組而不是一個函數。數組的元素是字符串,它們代表的是可以被注入到對象中的依賴的名字,最后一個參數就是依賴注入的目標函數對象本身。

    例如:

    angular.module('myApp')

    .controller('myController',['$scope', 'greeter', function($scope, greeter) {}]);

    語法糖(Syntactic sugar)

    是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會。

    轉載于:https://www.cnblogs.com/1000px/p/4670496.html

    總結

    以上是生活随笔為你收集整理的AngularJS依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。