Gli ultimi tutorial di sviluppo web
 

AngularJS Servizi


In AngularJS è possibile rendere il proprio servizio, o utilizzare uno dei tanti servizi incorporati.


Che cosa è un servizio?

In AngularJS, un servizio è una funzione, o un oggetto, che è disponibile per, e limitata a, l'applicazione AngularJS.

AngularJS ha circa 30 servizi incorporati. Uno di loro è la $location di servizio.

La $location servizio ha metodi che restituiscono informazioni sulla posizione della pagina Web corrente:

Esempio

Utilizzare la $location di servizio in un controllore:

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

Si noti che la $location di servizio viene passato al controller come argomento. Per utilizzare il servizio nel controllore, deve essere definita come una dipendenza.


Perché usare servizi?

Per molti servizi, come la $location di servizio, sembra che si potrebbe usare oggetti che sono già nel DOM, come la window.location oggetto, e si potrebbe, ma sarebbe hanno alcune limitazioni, almeno per quanto riguarda l'applicazione AngularJS.

AngularJS vigila costantemente l'applicazione e per poter gestire i cambiamenti e gli eventi correttamente, AngularJS preferisce utilizzare il $location di servizio al posto del window.location oggetto.


Il servizio di $ http

Il $http servizio è uno dei servizi usati più comuni nelle applicazioni AngularJS. Il servizio fa una richiesta al server, e permette l'applicazione di gestire la risposta.

Esempio

Utilizzare il $http servizio per richiedere i dati dal server:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm").then(function (response) {
        $scope.myWelcome = response.data;
    });
});
Prova tu stesso "

Questo esempio illustra un semplice utilizzo del $http servizio. Ulteriori informazioni sul $http servizio nel AngularJS Http Tutorial .


Il servizio di $ timeout

Il $timeout servizio è la versione AngularJS 'del window.setTimeout funzioni.

Esempio

Visualizzare un nuovo messaggio dopo due secondi:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $timeout) {
    $scope.myHeader = "Hello World!";
    $timeout(function () {
        $scope.myHeader = "How are you today?";
    }, 2000);
});
Prova tu stesso "

Il $ Intervallo di manutenzione

L' $interval servizio è la versione AngularJS 'del window.setInterval funzioni.

Esempio

Visualizzare l'ora ogni secondo:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $interval) {
    $scope.theTime = new Date().toLocaleTimeString();
    $interval(function () {
        $scope.theTime = new Date().toLocaleTimeString();
    }, 1000);
});
Prova tu stesso "

Crea il tuo servizio

Per creare il proprio servizio, collegare il servizio al modulo:

Creare un servizio denominato hexafy :

app.service('hexafy', function() {
    this.myFunc = function (x) {
        return x.toString(16);
    }
});

Per utilizzare il servizio personalizzato, aggiungerlo come una dipendenza quando si definisce il filtro:

Esempio

Utilizzare il servizio su ordine di nome hexafy per convertire un numero in un numero esadecimale:

app.controller('myCtrl', function($scope, hexafy ) {
    $scope.hex = hexafy .myFunc(255);
});
Prova tu stesso "

Utilizzare un servizio personalizzato all'interno di un filtro

Dopo aver creato un servizio, e collegato alla propria applicazione, è possibile utilizzare il servizio in qualsiasi controller, direttiva, filtro, o anche all'interno di altri servizi.

Per utilizzare il servizio all'interno di un filtro, inserirlo come dipendenza durante la definizione del filtro:

Il servizio hexafy utilizzato nel filtro myFormat :

app.filter('myFormat',[ 'hexafy' , function( hexafy ) {
    return function(x) {
        return hexafy .myFunc(x);
    };
}]);
Prova tu stesso "

È possibile utilizzare il filtro nella visualizzazione dei valori da un oggetto, o un array:

Creare un servizio denominato hexafy :

<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>
Prova tu stesso "