Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Camada de Visualização (Commons UI)

Conforme citado na seção de contextualização, a arquitetura proposta visa eliminar os problemas identificados em diversos projetos já executados, onde foi possível identificar a falta de padronização para realizar tarefas comuns no processo de desenvolvimento. Assim, temos como objetivo principal desta seção o detalhamento do projeto Commons UI que provê soluções para que seja possível estabilizar, o que era previamente uma atividade caótica, em uma atividade produtiva e padronizada. Em busca deste equilíbrio, foram estudadas soluções e padrões de mercado que balizam o desenvolvimento de software atualmente.

...

Note a forma que declaramos a função foo no service acima. Internamente, ao declarar um service, a função retornada será instanciada apenas quando necessário (lazy). Esta instanciação dá-se chamando construtor da função através do operador new. Services são estruturas simples, expoem métodos declarados no contexto (variável implícita this) e serão instanciados pelo AngularJS a partir de um construtor vaziopadrão. Como são estruturas simples, objetos mais complexos que tem a necessidade de receber parametros antes de sua criação são desenvolvidos como factories.

...

Bloco de código
themeEclipse
languagejs
titleRegistrando e Utilizando Factories
linenumberstrue
fooModuleshieldModule.factory('fooFactory$dialog', function() {
    return {
    var Dialog foo:= function(isOpen, operation) {
		console.log( 'This is foo factory printing bar :)' );
      } this.isOpen = isOpen ? isOpen : false;
    };
});
 
fooModule.controller('fooController', ['fooFactory', function(fooFactory) {
	
	fooFactory.foo()    this.operation = operation ? operation : '';
    };

    Dialog.prototype.close = function() {
        this.isOpen = false;
        this.operation = '';
    };

    Dialog.prototype.open = function(op) {
        this.isOpen = true;
        if (op) this.operation = op;
    };

    return {
      'new': function(isOpen, operation) {
		return new Dialog(isOpen, operation);
      }
    };
});


 
shieldApp.controller( 'PeriodCtrl', ['$scope', '$http', '$property', '$resourceLocator', '$dialog',
	
	// ...
	// ...
 
	$scope.view = {
		
		// ...
		// ...

		detailDialog: $dialog.new()

		// ...
		// ...

	};
	
}]);

Note a forma que declaramos a função foo na factory acima. Internamente, ao declarar uma factory, a função foo já esta instanciada e apenas será executada, diferentemente do service onde uma nova função será instanciada através do operador new.

...