首頁 > web前端 > js教程 > Angular如何創建服務? 5種方式了解一下!

Angular如何創建服務? 5種方式了解一下!

青灯夜游
發布: 2021-05-10 10:42:34
轉載
2880 人瀏覽過

本篇文章跟大家介紹一下Angular創建服務的5種方式。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

Angular如何創建服務? 5種方式了解一下!

config配置區塊

Angular應用的運作主要分為兩部分:app.config()和app.run( ),config是你設定任何的provider的階段,讓應用程式可以使用正確的服務,需要注意的是在設定區塊中只有provider能被注入(只有兩個例外是$provide和$injector)。而provider也只能在config中註入。 Angular注入服務的5種方式中,只有透過provider和constant注入的服務可以在依賴到config中。

app.controller('MyController', function ($httpProvider) {
	//错误,无法在控制器中注入服务提供者
});
app.config(function ($http) {
	//错误,配置块中只能注入服务
});
登入後複製

相關推薦:《angularjs教學

#關於一些內建的服務

##控制器函數是可以被注入的,但是控制器本身是不能被注入到任何東西裡面去的,然而,有一個內建的AngularJS服務叫做$controller,它負責設置你的控制器,調用myMod.controller(…)時,你實際上是訪問了這個服務的provider。

程式碼:

myMod.controller('MainController', function($scope) {
  // ...
});
登入後複製

實際上做了以下事情:

myMod.config(function($controllerProvider) {
  $controllerProvider.register('MainController', function($scope) {
// ...
  });
});
登入後複製

類似的還有filter和directive,filter會使用一個叫做$filter的服務以及它的provider $filterProvider,而directive使用一個叫做$compile的服務以及它的provider $compileProvidr。

服務的5中註入方式

factory()

依賴注入器將使用factory函數建立服務的實例,工廠函數傳回一個物件。

myModule.factory('myService', function () {
	var myService = {};
	//添加myService的一些属性和方法
	return myService;
});
登入後複製

service()

service注入透過傳遞一個函數給service,然後使用javascript的new操作產生一個服務,也就是說將屬性附加到this上即可,使用這個方法要小心javascript的this陷阱,this並不總是指向執行函數本身,也可能指向頂級物件window。

myModule.service('myService', function () {
	this.foo = 'bar';
});
登入後複製

provider()

實際上以上我們提到的factory和service被實作為provider上的語法糖,透過provider注入的服務可以作為提供者在配置區塊中使用,另外provider必須實作一個$get屬性。

myMod.provider('greeting', function() {
  var text = 'Hello, ';

  this.setText = function(value) {
     text = value;
  };

  this.$get = function() {
     return function(name) {   //$get必须实现,可以返回一个函数或者一个对象
         alert(text + name);
     };
  };
});

myMod.config(function(greetingProvider) {
  greetingProvider.setText("Howdy there, ");
});

myMod.run(function(greeting) {
  greeting('Ford Prefect');
});
登入後複製

constant(name,value)

constant主要用於註冊一個常數,value是一個值或json對象,通常這個常數主要用於配置經常使用的數據,constant配置的服務可以注入到config。

angular.module('myApp', [])
.constant('apiKey', '123123123')
.config(function(apiKey) {
// 在这里apiKey将被赋值为123123123
// 就像上面设置的那样
})
登入後複製

value(name,value)

value主要用於存放一些資料或方法以供使用,如果這個資料或方法需要被修改,就用value來建立服務,其中參數value是一個值或json物件。另外它不能夠依賴config。   


serviceApp.value('myConfig',{
    name:'code_bunny',
    age:12,
    getId:function(){
        return 1
    }
});
登入後複製
更多程式相關知識,請造訪:

程式設計影片! !

以上是Angular如何創建服務? 5種方式了解一下!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板