Angularjs – serviço vs fábrica vs fornecedor
Existe uma diferença principal:
var module = angular.module('mymodule');
module.service('a', function(){
this.data = [];
this.add = function(){};
this.remove = function(){};
});
module.factory('b', function(){
function c(p){
this.data = [];
this.p = p;
}
c.prototype = {
add : function(){},
remove : function(){}
}
return c;
});
module.factory('c', function(){
this.$get = function(){
}
});
a – é construtor
new a();
b – é função
b();
c – angular cria uma instância de função que chama isso. $ get function
new ProviderFunc().$get();
Factory:
Usado principalmente para criar uma nova instância de classe em cada controlador, a propriedade de dados de exemplo abaixo no objeto bb não será compartilhada de TestController -> Test2Controller por causa de sua nova instância.
module.controller('TestController', function($scope, b){
$scope.bb = new b('you can pass parameter');
});
module.controller('Test2Controller', function($scope, b){
$scope.bb = new b('you can pass parameter');
});
Serviço:
usado principalmente para compartilhar dados no aplicativo. A matriz de dados será visÃvel de TestController para Test2Controller
module.controller('TestController', function($scope, a){
$scope.bb = a;
});
module.controller('Test2Controller', function($scope, a){
$scope.bb = a;
});
Provedor: o
provedor pode ser configurável na instância do aplicativo.
module.config(function(c){
c.add([
{
a:1
}
])
});