Grundkenntnisse über AngularJs Dienstleistungen und Factories
Wofür braucht man AngularJs Services und Factories?
Wenn Sie etwas über AngularJs wissen, vielleicht wissen Sie auch über die MVC-Architektur und haben von AngularJs Controllern gehört. Aber manchmal brauchen wir etwas als globales für alle (oder einige) Controller, zum Beispiel einige Funktionen oder Variablen, Aktionen, die uns helfen, mit der Serverseite zu kommunizieren usw... Was kann man in diesem Fall tun?
AngularJs wäre nicht so mächtig, wenn es nicht die Komponenten gäbe, um solche Probleme zu lösen. AngularJs schlägt uns Services und Factories (manchmal Werte und Konstanten) vor, globale Aktionen und Variablen für Controller und für viele andere AngularJs-Komponenten zu haben. Lassen Sie uns sehen, wie wir einen einfachen Service definieren können.
angular.module('MyModule', [...])
.service('MyService', ['$http', function($http){
return {
users: [...],
getUserFriends: function(userId){
return $http({
method: 'GET',
url: '/api/user/friends/' + userId
});
},
deleteUserFriend: function(userId, friendId){
return $http({
method: 'DELETE'
url: '/api/user/delete/friend/' + userId +'/' + friendId
});
}
....
}
}])
Das gleiche können Sie mithilfe von AngularJs Factory machen. Hier verwendet man gleicher "Service" mit "Factory". Nun lassen Sie uns sehen, wie wir diesen Dienst benutzen können. Lassen Sie uns einen einfachen Controller definieren und diesen Service nutzen.
angular.module('MyModule')
.controller('MyController', ['$scope', 'MyService', function($scope, MyService){
$scope.users = MyService.users // some items inside array
$scope.deleteUserFriend = function(userId, friendId){
if(userId && friendId){
MyService.deleteUserFriend(userId, friendId)
.success(function(res, ...){
// on success function
})
.error(function(res, ...){
// on error function
})
}
...
}
}])
Wie Sie sehen, haben Service und Factories einige Servicefunktionen, um mit dem Server zu kommunizieren, Daten zu speichern usw...
AngularJs ermöglicht es uns, Services und Factories innerhalb anderer AngularJs-Komponenten wie Direktiven, Factories, Even inside Services zu verwenden.