您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Angular怎么創建服務,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
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。
依賴注入器將使用factory函數創建服務的實例,工廠函數返回一個對象。
myModule.factory('myService', function () { var myService = {}; //添加myService的一些屬性和方法 return myService; });
service注入通過傳遞一個函數給service,然后使用javascript的new操作生成一個服務,也就是說將屬性附加到this上即可,使用這個方法要小心javascript的this陷阱,this并不總是指向執行函數本身,也可能指向頂級對象window。
myModule.service('myService', function () { this.foo = 'bar'; });
實際上以上我們提到的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主要用于注冊一個常量,value是一個值或者json對象,通常這個常量主要用于配置經常使用的數據,constant配置的服務可以注入到config。
angular.module('myApp', []) .constant('apiKey', '123123123') .config(function(apiKey) { // 在這里apiKey將被賦值為123123123 // 就像上面設置的那樣 })
value主要用于存放一些數據或方法以供使用,如果這個數據或方法需要被修改,就用value來創建服務,其中參數value是一個值或者json對象。另外它不能夠依賴到config中。
serviceApp.value('myConfig',{ name:'code_bunny', age:12, getId:function(){ return 1 } });
關于“Angular怎么創建服務”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。