最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于AngularJS中幾種Providers的區(qū)別總結

 更新時間:2020年05月17日 09:34:13   作者:lavender  
這篇文章主要給大家介紹了關于AngularJS中幾種Providers的區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用AngularJS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

原文:https://xebia.com/blog/differ...

什么是Provider?

AngularJS文檔對provider的定義:

provider是一個帶有$get()方法的對象。injector調用$get方法創(chuàng)建一個新的service的實例。provider還有一些其他的方法,可以用來配置provider。

AngularJS使用$provide注冊新的providers。providers基本上都會創(chuàng)建一個新實例, 但每個provider只創(chuàng)建一次。$provide提供了6種方法創(chuàng)建自定義provider, 我會用簡單的代碼示例分別解釋他們。

6種方法如下:

  • constant
  • value
  • service
  • factory
  • decorator
  • provider

Constant

constant能被injected到任何地方。constant不能被decorator攔截, 意味著constant的值永遠不能被改變。

var app = angular.module('app', []); 
app.config(function ($provide) {
 $provide.constant('movieTitle', 'The Matrix');
});

app.controller('ctrl', function (movieTitle) {
 expect(movieTitle).toEqual('The Matrix');
});

AngularJS提供了一種更簡便的方式創(chuàng)建constant. 你可以將上面3至5行的代碼重寫為:

app.constant('movieTitle', 'The Matrix');

Value

value是一個簡單的可被注入的值,可以是string, number, 也可以是function。

與constant不同的是:value不能被注入到configurations, 但value能被decorators攔截。

var app = angular.module('app', []); 
app.config(function ($provide) {
 $provide.value('movieTitle', 'The Matrix')
});

app.controller('ctrl', function (movieTitle) {
 expect(movieTitle).toEqual('The Matrix');
})

創(chuàng)建value的簡單方法:

app.value('movieTitle', 'The Matrix');

Service

service是一個可以注入的構造函數(shù)。如果你想,你可以在函數(shù)中指定需要的依賴。

service是一個單例, 只被創(chuàng)建一次。services是一個很好的方式,用于控制器之間傳遞數(shù)據(jù),如共享數(shù)據(jù)。

var app = angular.module('app' ,\[\]); 
app.config(function ($provide) {
 $provide.service('movie', function () {
  this.title = 'The Matrix';
 });
});

app.controller('ctrl', function (movie) {
 expect(movie.title).toEqual('The Matrix');
});

創(chuàng)建service簡單方式:

app.service('movie', function () {
 this.title = 'The Matrix';
});

Factory

factory是一個可注入的函數(shù)。

與service的相同點:factory也是一個單例,也可以在此函數(shù)中指定依賴。

區(qū)別是:factory注入一個普通函數(shù),AngularJs將調用此函數(shù),而service注入一個構造函數(shù)。

service是一個構造函數(shù),要調用new創(chuàng)建一個新對象。而用factory,你可以讓這個函數(shù)返回你想要的任何東西。
你將會看到,factory是一個只有$get方法的provider。

var app = angular.module('app', []); 
app.config(function ($provide) {
 $provide.factory('movie', function () {
  return {
   title: 'The Matrix';
  }
 });
});

app.controller('ctrl', function (movie) {
 expect(movie.title).toEqual('The Matrix');
});

創(chuàng)建factory的簡單方式:

app.factory('movie', function () {
 return {
  title: 'The Matrix';
 }
});

Decorator

decorator可以修改或封裝其它的providers,但constant不能被裝飾。

var app = angular.module('app', []); 
app.value('movieTitle', 'The Matrix'); 
app.config(function ($provide) {
 $provide.decorator('movieTitle', function ($delegate) {
  return $delegate + ' - starring Keanu Reeves';
 });
});

app.controller('myController', function (movieTitle) {
 expect(movieTitle).toEqual('The Matrix - starring Keanu Reeves');
});

Provider
provider是所有providers中最復雜的,可以有復雜的creation函數(shù)和配置選項。

provider實際是一個可配置的factory。 provider接受一個對象或構造函數(shù)。

var app = angular.module('app', []); 
app.provider('movie', function () {
 var version;
 return {
  setVersion: function (value) {
   version = value;
  },
  $get: function () {
   return {
    title: 'The Matrix' + ' ' + version
   }
  }
 }
});

app.config(function (movieProvider) {
 movieProvider.setVersion('Reloaded');
});

app.controller('ctrl', function (movie) {
 expect(movie.title).toEqual('The Matrix Reloaded');
});

總結

所有的providers只會被實例化一次,因此他們都是單例的。

除了constant,其他的providers都可以被decorated。

constant是一個值, 可以被注入到任何地方,它的值不能被改變。

value是一個簡單的可注入的值。

service是一個可注入的構造函數(shù)。

factory是以個可注入的函數(shù)。

decorator可以修改或封裝其它的providers,除了constant。

provider是一個可配置的factory。

到此這篇關于關于AngularJS中幾種Providers的區(qū)別總結的文章就介紹到這了,更多相關AngularJS中Providers區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Angular8路由守衛(wèi)原理和使用方法

    Angular8路由守衛(wèi)原理和使用方法

    這篇文章主要給大家介紹了關于Angular8路由守衛(wèi)原理和使用方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Angular8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Angularjs的$http異步刪除數(shù)據(jù)詳解及實例

    Angularjs的$http異步刪除數(shù)據(jù)詳解及實例

    這篇文章主要介紹了Angularjs的$http異步刪除數(shù)據(jù)詳解及實例的相關資料,這里提供實現(xiàn)思路及實現(xiàn)具體的方法,需要的朋友可以參考下
    2017-07-07
  • Angular實現(xiàn)下載安裝包的功能代碼分享

    Angular實現(xiàn)下載安裝包的功能代碼分享

    本文通過實例代碼給大家介紹了angular實現(xiàn)下載安裝包的功能以及基于angularjs代碼實現(xiàn)錨點跳轉的功能,需要的朋友參考下吧
    2017-09-09
  • 詳解angularJs中自定義directive的數(shù)據(jù)交互

    詳解angularJs中自定義directive的數(shù)據(jù)交互

    這篇文章主要介紹了詳解angularJs中自定義directive的數(shù)據(jù)交互,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Angular之jwt令牌身份驗證的實現(xiàn)

    Angular之jwt令牌身份驗證的實現(xiàn)

    這篇文章主要介紹了Angular之jwt令牌身份驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 什么是 AngularJS?AngularJS簡介

    什么是 AngularJS?AngularJS簡介

    這篇文章主要介紹了什么是 AngularJS?AngularJS簡介,本文講解了AngularJS方方面面的基礎知識,AngularJS 是一個為動態(tài)WEB應用設計的結構框架。它能讓你使用HTML作為模板語言,通過擴展HTML的語法,讓你能更清楚、簡潔地構建你的應用組件,需要的朋友可以參考下
    2014-12-12
  • Angular(5.2->6.1)升級小結

    Angular(5.2->6.1)升級小結

    今天小編就為大家分享一篇關于Angular(5.2->6.1)升級小結,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Angular表格神器ui-grid應用詳解

    Angular表格神器ui-grid應用詳解

    這篇文章主要為大家詳細介紹了Angular表格神器ui-grid應用的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Angular異步執(zhí)行學習之zone.js使用

    Angular異步執(zhí)行學習之zone.js使用

    這篇文章主要為大家介紹了Angular異步執(zhí)行學習之zone.js使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • AngularJS基礎學習筆記之簡單介紹

    AngularJS基礎學習筆記之簡單介紹

    AngularJS 不僅僅是一個類庫,而是提供了一個完整的框架。它避免了您和多個類庫交互,需要熟悉多套接口的繁瑣工作。它由Google Chrome的開發(fā)人員設計,引領著下一代Web應用開發(fā)。也許我們5年或10年后不會使用AngularJS,但是它的設計精髓將會一直被沿用。
    2015-05-05

最新評論

彭泽县| 西和县| 长寿区| 荆州市| 英吉沙县| 宁陵县| 肥城市| 余姚市| 安新县| 通州区| 正安县| 南通市| 普兰店市| 永济市| 营山县| 大名县| 密山市| 敦煌市| 梁河县| 顺平县| 儋州市| 汶川县| 林周县| 古蔺县| 阿鲁科尔沁旗| 涡阳县| 交口县| 阿坝县| 徐闻县| 通江县| 信阳市| 潼关县| 正阳县| 兴隆县| 昌都县| 通榆县| 洛川县| 繁峙县| 当雄县| 江孜县| 区。|