Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Evitar abrir varias vezes o modulo, serviço, e outros

Como posso não ficar toda hora carregando os mesmo modulos várias vezes? sem ter que ficar definindo novamente o mesmo modulo que o meu angular já abriu e está lá carregado em um controller diferente por exemplo?

5 respostas

Um módulo não é recarregado duas vezes. Uma vez carregado ele não é mais carregado.

Entendi. Agora se eu tiver em cada controller o mesmo serviço e factory carregado, eu poderia não carregar em todos os controllers essa factory ou serviço e deixar carregar apenas em 1 único controller e poder chamar ou acessar ele?

Penso nisso como... tenho 10controllers, os 10, carregam ( 1 serviço + 1 factory ), assim acabam sendo 10serviço + 10factory iguais ( carregados ), isso é um problema ou daria para apenas 1 controller carregar ( 1 serviço + 1 factory ) e todos os outros controllers terem acesso a esse serviço + factory?

solução!

Opa!

Quando criamos Factories em Angular, só temos uma única instância compartilhada por toda aplicação. Sendo assim, se você injetar a Factory em 10 controllers, será a mesma Factory nesses 10 controlllers. Com isso, você não precisa se preocupar.

O mais importante do seu questionamento é sua preocupação com carregamento desnecessário e isso é muito bom. Porém, a equipe do Angular já resolveu por padrão isso para você.

Só para ficar claro, não confundir a importação dos js dos serviços com seu carregamento. Se tivermos 100 arquivos de serviços o navegador carregará os 100, mas não é carregar para usar, mas carregar para torná-los disponíveis para injeção. Daí, no processo de injeção, é o que eu te falei, sua Factory é uma instância compartilhada em toda a aplicação.

Tudo certinho agora?

Obrigado, agora entendi perfeitamente agora.

Excelente! Ai vai a dica: e se quisermos compartilhar um dado entre os controllers? Se você pendurar esse dado no serviço criado através de Factory, todos os controllers poderão ler e atualizar os dados em um único lugar. Diferente de outros padrões de projeto, como no mundo Java, um serviço em Angular pode guardar estado (é que nessas outras linguagens, quando falarmos em serviço pensamos em algo que não guarda estado).