Árvore de páginas

O arquivo de services define os serviços que serão utilizados pelos controllers, geramente nos serviços são definidos factories para acesso a entidades, services para acessar as factories, services de definição de zoom´s ou qualquer outro que seja necessário.

 

O fonte abaixo está documentado para os serviços da tela de exemplo

Arquivo message-services.js
define(['index', // index é necessário para registrar os serviços
		'ng-load!totvs-resource' // como utilizamos o $totvsresource, precisamos importar o modulo que o define
	   ], function(index) {
	// *************************************************************************************
	// *** FACTORIES
	// *************************************************************************************
	messageFactory.$inject = ['$totvsresource'];
	function messageFactory($totvsresource) {
		
		// definimos uma nova factory a partir do totvsresource, passando a URL do serviço de DBO
		var factory = $totvsresource.REST('/datasul-rest/resources/dbo/adbo/boad176na/:method/:id');
		
		// implementamos um metodo findRecords para abstrair a chamada ao resource
		factory.findRecords = function (parameters, callback) {
			return this.TOTVSQuery(parameters, callback);
		};
		
		// implementamos tambem o getRecord e todos os outros metodos de CRUD
		factory.getRecord = function (id, callback) {
			return this.TOTVSGet({id: id}, callback);
		};
		
		factory.saveRecord = function (model, callback) {
			return this.TOTVSSave({}, model, callback);
		};
		
		factory.updateRecord = function (id, model, callback) {
			return this.TOTVSUpdate({id: id}, model, callback);
		};
		
		factory.deleteRecord = function (id, callback) {
			return this.TOTVSRemove({id: id}, callback);
		};
		
		return factory;
	}
	// factory injeta o valor de retorno da messageFactory
	index.register.factory('html-sample.message.Factory', messageFactory);	
	
	// **************************************************************************************
	// *** SERVICE
	// **************************************************************************************
	
	messageService.$inject = ['html-sample.message.Factory'];
	function messageService(messageFactory) {
		
		// definimos um service que usa a factory, nesses metodos abstraimos a chamada e tratamos outros detalhes da chamada.
		this.findRecords = function (startAt, limitAt, parameters, callback) {
			if (!parameters) {
				parameters = {};
			}
			parameters.start = startAt;
			parameters.limit = limitAt;
			
			return messageFactory.findRecords(parameters, callback);
		};
		
		this.getRecord = function (id, callback) {
			return messageFactory.getRecord(id, callback);
		};
		
		this.saveRecord = function (model, callback) {
			return messageFactory.saveRecord(model, callback);
		};
		
		this.updateRecord = function (id, model, callback) {
			return messageFactory.updateRecord(id, model, callback);
		};
		
		this.deleteRecord = function (id, callback) {
			return messageFactory.deleteRecord(id, callback);
		};
	}
	// service injeta uma instancia da função
	index.register.service('html-sample.message.Service', messageService);
	
});
  • Sem rótulos