這篇文章將為大家詳細(xì)講解有關(guān)Angular怎么創(chuàng)建服務(wù),小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬主機(jī)、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,西云機(jī)房,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
Angular應(yīng)用的運(yùn)行主要分為兩部分:app.config()和app.run(),config是你設(shè)置任何的provider的階段,從而使應(yīng)用可以使用正確的服務(wù),需要注意的是在配置塊中只有provider能被注入(只有兩個例外是$provide和$injector)。而且provider也只能在config中注入。Angular注入服務(wù)的5種方式中,只有通過provider和constant注入的服務(wù)可以在依賴到config中。
app.controller('MyController', function ($httpProvider) { //錯誤,無法在控制器中注入服務(wù)提供者 }); app.config(function ($http) { //錯誤,配置塊中只能注入服務(wù) });
相關(guān)推薦:《angularjs教程》
控制器函數(shù)是可以被注入的,但是控制器本身是不能被注入到任何東西里面去的,然而,有一個內(nèi)建的AngularJS服務(wù)叫做$controller,它負(fù)責(zé)設(shè)置你的控制器,調(diào)用myMod.controller(…)時,你實(shí)際上是訪問了這個服務(wù)的provider。
代碼:
myMod.controller('MainController', function($scope) { // ... });
實(shí)際上做了以下事情:
myMod.config(function($controllerProvider) { $controllerProvider.register('MainController', function($scope) { // ... }); });
類似的還有filter和directive,filter會使用一個叫做$filter的服務(wù)以及它的provider $filterProvider,而directive使用一個叫做$compile的服務(wù)以及它的provider $compileProvidr。
依賴注入器將使用factory函數(shù)創(chuàng)建服務(wù)的實(shí)例,工廠函數(shù)返回一個對象。
myModule.factory('myService', function () { var myService = {}; //添加myService的一些屬性和方法 return myService; });
service注入通過傳遞一個函數(shù)給service,然后使用javascript的new操作生成一個服務(wù),也就是說將屬性附加到this上即可,使用這個方法要小心javascript的this陷阱,this并不總是指向執(zhí)行函數(shù)本身,也可能指向頂級對象window。
myModule.service('myService', function () { this.foo = 'bar'; });
實(shí)際上以上我們提到的factory和service被實(shí)現(xiàn)為provider上的語法糖,通過provider注入的服務(wù)可以作為提供者在配置塊中使用,另外provider必須實(shí)現(xiàn)一個$get屬性。
myMod.provider('greeting', function() { var text = 'Hello, '; this.setText = function(value) { text = value; }; this.$get = function() { return function(name) { //$get必須實(shí)現(xiàn),可以返回一個函數(shù)或者一個對象 alert(text + name); }; }; }); myMod.config(function(greetingProvider) { greetingProvider.setText("Howdy there, "); }); myMod.run(function(greeting) { greeting('Ford Prefect'); });
constant主要用于注冊一個常量,value是一個值或者json對象,通常這個常量主要用于配置經(jīng)常使用的數(shù)據(jù),constant配置的服務(wù)可以注入到config。
angular.module('myApp', []) .constant('apiKey', '123123123') .config(function(apiKey) { // 在這里apiKey將被賦值為123123123 // 就像上面設(shè)置的那樣 })
value主要用于存放一些數(shù)據(jù)或方法以供使用,如果這個數(shù)據(jù)或方法需要被修改,就用value來創(chuàng)建服務(wù),其中參數(shù)value是一個值或者json對象。另外它不能夠依賴到config中。
serviceApp.value('myConfig',{ name:'code_bunny', age:12, getId:function(){ return 1 } });
關(guān)于“Angular怎么創(chuàng)建服務(wù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。