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 $locationmá metody, které vracejí informace o umístění aktuální webové stránky:

Příklad

Použijte $locationslužbu v ovladači:

var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});

Všimněte si, že $locationsluž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 $locationsluž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 $httpje 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í $httpsluž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í $httpslužby. Další informace o $httpslužbě naleznete v AngularJS Http Tutorial .



Služba $timeout

Služba $timeoutje verzí window.setTimeoutfunkce 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 $intervalje verzí window.setIntervalfunkce 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

hexafyK 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 hexafypouž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>