Služby AngularJS
V AngularJS si můžete vytvořit vlastní službu nebo použít jednu z mnoha vestavěných služeb.
Co je to služba?
V AngularJS je služba funkce nebo objekt, který je dostupný a omezený na vaši aplikaci AngularJS.
AngularJS má asi 30 vestavěných služeb. Jednou z nich je $location
služba.
Služba $location
má metody, které vracejí informace o umístění aktuální webové stránky:
Příklad
Použijte $location
službu v ovladači:
var app = angular.module('myApp', []);
app.controller('customersCtrl',
function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Všimněte si, že $location
služba je předána řadiči jako argument. Aby bylo možné používat službu v ovladači, musí být definována jako závislost.
Proč používat Služby?
U mnoha služeb, jako je $location
služba, se zdá, že byste mohli použít objekty, které jsou již v DOM, jako je window.location
objekt, a mohli byste, ale mělo by to určitá omezení, alespoň pro vaši aplikaci AngularJS.
AngularJS neustále dohlíží na vaši aplikaci, a aby správně zpracovávala změny a události, AngularJS preferuje, abyste $location
místo objektu používali službu window.location
.
Služba $http
Služba $http
je jednou z nejčastěji používaných služeb v aplikacích AngularJS. Služba odešle požadavek na server a nechá vaši aplikaci zpracovat odpověď.
Příklad
Pomocí $http
služby můžete požádat o data ze serveru:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm").then(function
(response) {
$scope.myWelcome
= response.data;
});
});
Tento příklad ukazuje velmi jednoduché použití $http
služby. Další informace o $http
službě naleznete v AngularJS Http Tutorial .
Služba $timeout
Služba $timeout
je verzí
window.setTimeout
funkce AngularJS.
Příklad
Zobrazit novou zprávu po dvou sekundách:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $timeout) {
$scope.myHeader = "Hello
World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
Služba $interval
Služba $interval
je verzí
window.setInterval
funkce AngularJS.
Příklad
Zobrazte čas každou sekundu:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $interval) {
$scope.theTime = new
Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
},
1000);
});
Vytvořte si vlastní službu
Chcete-li vytvořit vlastní službu, připojte svou službu k modulu:
Vytvořte službu s názvem hexafy
:
app.service('hexafy', function() {
this.myFunc = function (x) {
return x.toString(16);
}
});
Chcete-li používat vlastní službu, přidejte ji jako závislost při definování ovladače:
Příklad
hexafy
K převodu čísla na hexadecimální číslo použijte vlastní službu s názvem :
app.controller('myCtrl', function($scope, hexafy) {
$scope.hex
= hexafy.myFunc(255);
});
Použijte vlastní službu uvnitř filtru
Jakmile vytvoříte službu a připojíte ji ke své aplikaci, můžete službu používat v jakémkoli řadiči, direktivě, filtru nebo dokonce uvnitř jiných služeb.
Chcete-li použít službu uvnitř filtru, přidejte ji jako závislost při definování filtru:
Služba hexafy
použitá ve filtru myFormat
:
app.filter('myFormat',['hexafy', function(hexafy) {
return function(x) {
return
hexafy.myFunc(x);
};
}]);
Filtr můžete použít při zobrazení hodnot z objektu nebo pole:
<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>